Add v2 launcher updater endpoint
This commit is contained in:
4 files changed
+119
-1
No files matched your search
@@ -16,6 +16,7 @@ import { handler as canLoadClientHandler } from './routes/can-load-client'
|
||||
import { handler as launcherModsGetHandler } from './routes/launcher/mods/get'
|
||||
import { handler as launcherVersionsHandler } from './routes/launcher/versions/get'
|
||||
import { handler as launcherLatestHandler } from './routes/launcher/latest/get'
|
||||
import { handler as launcherUpdateHandler } from './routes/launcher/update/get'
|
||||
import { handler as launcherDownloadHandler } from './routes/launcher/download/get'
|
||||
import { handler as launcherLoaderLatestHandler } from './routes/launcher/loader/latest/get'
|
||||
import { handler as launcherLoaderUpdateDataHandler } from './routes/launcher/loader/update-data/get'
|
||||
@@ -1011,6 +1012,24 @@ app.get('/launcher/latest', launcherLatestHandler, {
|
||||
)
|
||||
})
|
||||
})
|
||||
app.get('/launcher/update', launcherUpdateHandler, {
|
||||
detail: {
|
||||
description: "The endpoint for getting the launcher's update data.",
|
||||
tags: ['Launcher']
|
||||
},
|
||||
query: t.Object({
|
||||
target: t.String(),
|
||||
arch: t.String(),
|
||||
currentVersion: t.String()
|
||||
}),
|
||||
headers: t.Object({
|
||||
'x-forwarded-for': t.Optional(
|
||||
t.String({
|
||||
hide: true
|
||||
})
|
||||
)
|
||||
})
|
||||
})
|
||||
app.get('/launcher/download', context => launcherDownloadHandler(context), {
|
||||
query: t.Object({
|
||||
versionId: t.Optional(t.String({ hide: true })),
|
||||
|
||||
@@ -6,6 +6,7 @@ import {
|
||||
longtext,
|
||||
mysqlTable,
|
||||
text,
|
||||
timestamp,
|
||||
tinyint,
|
||||
varchar
|
||||
} from 'drizzle-orm/mysql-core'
|
||||
@@ -126,6 +127,14 @@ export const modVersions = mysqlTable('modversions', {
|
||||
hidden: boolean('hidden').default(false).notNull()
|
||||
})
|
||||
|
||||
export const v2LauncherUpdates = mysqlTable('v2launcherupdates', {
|
||||
id: bigint('id', { mode: 'number' }).primaryKey().autoincrement().notNull(),
|
||||
version: varchar('version', { length: 32 }).notNull(),
|
||||
notes: text('notes').notNull(),
|
||||
releaseDate: timestamp('release_date').notNull(),
|
||||
downloadData: text('download_data').notNull()
|
||||
})
|
||||
|
||||
// berrydashdatabase
|
||||
|
||||
export const berryDashUserData = mysqlTable('userdata', {
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
import { files, v2LauncherUpdates } from '../../../lib/tables'
|
||||
import { desc, eq } from 'drizzle-orm'
|
||||
import { getDatabaseConnection, jsonResponse } from '../../../lib/util'
|
||||
import { Context } from 'elysia'
|
||||
|
||||
export const handler = async (context: Context) => {
|
||||
const dbResult = getDatabaseConnection(0)
|
||||
if (!dbResult) return
|
||||
const { connection, db } = dbResult
|
||||
|
||||
const target = context.query.target
|
||||
const arch = context.query.arch
|
||||
// const currentVersion = context.query.currentVersion
|
||||
|
||||
const versionsData = await db
|
||||
.select({
|
||||
version: v2LauncherUpdates.version,
|
||||
notes: v2LauncherUpdates.notes,
|
||||
releaseDate: v2LauncherUpdates.releaseDate,
|
||||
downloadData: v2LauncherUpdates.downloadData
|
||||
})
|
||||
.from(v2LauncherUpdates)
|
||||
.orderBy(desc(v2LauncherUpdates.id))
|
||||
.limit(1)
|
||||
.execute()
|
||||
|
||||
if (versionsData.length != 1) return
|
||||
|
||||
const downloadData = JSON.parse(versionsData[0].downloadData)[
|
||||
(target + '-' + arch)
|
||||
.replace('windows', 'win')
|
||||
.replace('darwin', 'macos')
|
||||
.replace('x86_64', 'x64')
|
||||
.replace('i686', 'x86')
|
||||
.replace('aarch64', 'arm64')
|
||||
.replace('armv7', 'arm32')
|
||||
]
|
||||
|
||||
if (!downloadData) return
|
||||
|
||||
const fileInfo = await db
|
||||
.select({ path: files.path })
|
||||
.from(files)
|
||||
.where(eq(files.id, downloadData.download))
|
||||
|
||||
if (fileInfo.length != 1) return
|
||||
|
||||
console.log({
|
||||
version: versionsData[0].version,
|
||||
notes: versionsData[0].notes,
|
||||
pub_date: versionsData[0].releaseDate,
|
||||
url: 'https://games-r2.lncvrt.xyz/' + fileInfo[0].path,
|
||||
signature: downloadData.signature
|
||||
})
|
||||
|
||||
connection.end()
|
||||
return jsonResponse({
|
||||
version: versionsData[0].version,
|
||||
notes: versionsData[0].notes,
|
||||
pub_date: versionsData[0].releaseDate,
|
||||
url: 'https://games-r2.lncvrt.xyz/' + fileInfo[0].path,
|
||||
signature: downloadData.signature
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user