mirror of
https://github.com/Suwayomi/Suwayomi-Server.git
synced 2026-06-30 17:34:39 -05:00
check app update api closes #72
This commit is contained in:
@@ -2,6 +2,8 @@ package suwayomi.tachidesk.global
|
|||||||
|
|
||||||
import io.javalin.Javalin
|
import io.javalin.Javalin
|
||||||
import suwayomi.tachidesk.global.impl.About
|
import suwayomi.tachidesk.global.impl.About
|
||||||
|
import suwayomi.tachidesk.global.impl.AppUpdate
|
||||||
|
import suwayomi.tachidesk.server.JavalinSetup
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) Contributors to the Suwayomi project
|
* Copyright (C) Contributors to the Suwayomi project
|
||||||
@@ -17,9 +19,12 @@ object GlobalAPI {
|
|||||||
ctx.json(About.getAbout())
|
ctx.json(About.getAbout())
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: app update check api
|
// check for app updates
|
||||||
app.get("/api/v1/settings/check-update/") { ctx ->
|
app.get("/api/v1/settings/check-update/") { ctx ->
|
||||||
ctx.json(About.getAbout())
|
|
||||||
|
ctx.json(
|
||||||
|
JavalinSetup.future { AppUpdate.checkUpdate() }
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,57 @@
|
|||||||
|
package suwayomi.tachidesk.global.impl
|
||||||
|
|
||||||
|
import eu.kanade.tachiyomi.network.GET
|
||||||
|
import eu.kanade.tachiyomi.network.NetworkHelper
|
||||||
|
import kotlinx.serialization.json.Json
|
||||||
|
import kotlinx.serialization.json.jsonObject
|
||||||
|
import kotlinx.serialization.json.jsonPrimitive
|
||||||
|
import suwayomi.tachidesk.manga.impl.util.network.await
|
||||||
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) Contributors to the Suwayomi project
|
||||||
|
*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
data class UpdateDataClass(
|
||||||
|
val channel: String,
|
||||||
|
val tag: String,
|
||||||
|
val url: String
|
||||||
|
)
|
||||||
|
|
||||||
|
object AppUpdate {
|
||||||
|
const val LATEST_RELEASE_URL = "https://api.github.com/repos/Suwayomi/Tachidesk/releases/latest"
|
||||||
|
const val LATEST_PREVIEW_URL = "https://api.github.com/repos/Suwayomi/Tachidesk-preview/releases/latest"
|
||||||
|
|
||||||
|
private val json: Json by injectLazy()
|
||||||
|
private val network: NetworkHelper by injectLazy()
|
||||||
|
|
||||||
|
suspend fun checkUpdate(): List<UpdateDataClass> {
|
||||||
|
val releaseJson = json.parseToJsonElement(
|
||||||
|
network.client.newCall(
|
||||||
|
GET(LATEST_RELEASE_URL)
|
||||||
|
).await().body!!.string()
|
||||||
|
).jsonObject
|
||||||
|
|
||||||
|
val previewJson = json.parseToJsonElement(
|
||||||
|
network.client.newCall(
|
||||||
|
GET(LATEST_PREVIEW_URL)
|
||||||
|
).await().body!!.string()
|
||||||
|
).jsonObject
|
||||||
|
|
||||||
|
return listOf(
|
||||||
|
UpdateDataClass(
|
||||||
|
"Release",
|
||||||
|
releaseJson["tag_name"]!!.jsonPrimitive.content,
|
||||||
|
releaseJson["html_url"]!!.jsonPrimitive.content,
|
||||||
|
),
|
||||||
|
UpdateDataClass(
|
||||||
|
"Preview",
|
||||||
|
previewJson["tag_name"]!!.jsonPrimitive.content,
|
||||||
|
previewJson["html_url"]!!.jsonPrimitive.content,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user