Use GitHub pages URLs for public channel JSONs

This commit is contained in:
topjohnwu 2020-10-03 01:57:53 -07:00
parent 241f2656fa
commit 716f06846b
7 changed files with 34 additions and 17 deletions

View File

@ -47,14 +47,12 @@ object Const {
object Url { object Url {
const val ZIP_URL = "https://github.com/Magisk-Modules-Repo/%s/archive/master.zip" const val ZIP_URL = "https://github.com/Magisk-Modules-Repo/%s/archive/master.zip"
const val PAYPAL_URL = "https://www.paypal.me/topjohnwu"
const val PATREON_URL = "https://www.patreon.com/topjohnwu" const val PATREON_URL = "https://www.patreon.com/topjohnwu"
const val TWITTER_URL = "https://twitter.com/topjohnwu"
const val XDA_THREAD = "http://forum.xda-developers.com/showthread.php?t=3432382"
const val SOURCE_CODE_URL = "https://github.com/topjohnwu/Magisk" const val SOURCE_CODE_URL = "https://github.com/topjohnwu/Magisk"
const val GITHUB_RAW_URL = "https://raw.githubusercontent.com/" const val GITHUB_RAW_URL = "https://raw.githubusercontent.com/"
const val GITHUB_API_URL = "https://api.github.com/users/Magisk-Modules-Repo/" const val GITHUB_API_URL = "https://api.github.com/users/Magisk-Modules-Repo/"
const val GITHUB_PAGE_URL = "https://topjohnwu.github.io/magisk_files/"
} }
object Key { object Key {

View File

@ -7,6 +7,15 @@ import okhttp3.ResponseBody
import retrofit2.Response import retrofit2.Response
import retrofit2.http.* import retrofit2.http.*
interface GithubPageServices {
@GET("stable.json")
suspend fun fetchStableUpdate(): UpdateInfo
@GET("beta.json")
suspend fun fetchBetaUpdate(): UpdateInfo
}
interface GithubRawServices { interface GithubRawServices {
//region topjohnwu/magisk_files //region topjohnwu/magisk_files

View File

@ -2,27 +2,29 @@ package com.topjohnwu.magisk.data.repository
import com.topjohnwu.magisk.core.Config import com.topjohnwu.magisk.core.Config
import com.topjohnwu.magisk.core.Info import com.topjohnwu.magisk.core.Info
import com.topjohnwu.magisk.data.network.GithubPageServices
import com.topjohnwu.magisk.data.network.GithubRawServices import com.topjohnwu.magisk.data.network.GithubRawServices
import retrofit2.HttpException import retrofit2.HttpException
import timber.log.Timber import timber.log.Timber
import java.io.IOException import java.io.IOException
class MagiskRepository( class MagiskRepository(
private val apiRaw: GithubRawServices private val rawSvc: GithubRawServices,
private val pageSvc: GithubPageServices
) { ) {
suspend fun fetchUpdate() = try { suspend fun fetchUpdate() = try {
var info = when (Config.updateChannel) { var info = when (Config.updateChannel) {
Config.Value.DEFAULT_CHANNEL, Config.Value.STABLE_CHANNEL -> apiRaw.fetchStableUpdate() Config.Value.DEFAULT_CHANNEL, Config.Value.STABLE_CHANNEL -> pageSvc.fetchStableUpdate()
Config.Value.BETA_CHANNEL -> apiRaw.fetchBetaUpdate() Config.Value.BETA_CHANNEL -> pageSvc.fetchBetaUpdate()
Config.Value.CANARY_CHANNEL -> apiRaw.fetchCanaryUpdate() Config.Value.CANARY_CHANNEL -> rawSvc.fetchCanaryUpdate()
Config.Value.CUSTOM_CHANNEL -> apiRaw.fetchCustomUpdate(Config.customChannelUrl) Config.Value.CUSTOM_CHANNEL -> rawSvc.fetchCustomUpdate(Config.customChannelUrl)
else -> throw IllegalArgumentException() else -> throw IllegalArgumentException()
} }
if (info.magisk.versionCode < Info.env.magiskVersionCode && if (info.magisk.versionCode < Info.env.magiskVersionCode &&
Config.updateChannel == Config.Value.DEFAULT_CHANNEL) { Config.updateChannel == Config.Value.DEFAULT_CHANNEL) {
Config.updateChannel = Config.Value.BETA_CHANNEL Config.updateChannel = Config.Value.BETA_CHANNEL
info = apiRaw.fetchBetaUpdate() info = pageSvc.fetchBetaUpdate()
} }
Info.remote = info Info.remote = info
info info

View File

@ -7,6 +7,7 @@ import com.topjohnwu.magisk.core.Config
import com.topjohnwu.magisk.core.Const import com.topjohnwu.magisk.core.Const
import com.topjohnwu.magisk.core.Info import com.topjohnwu.magisk.core.Info
import com.topjohnwu.magisk.data.network.GithubApiServices import com.topjohnwu.magisk.data.network.GithubApiServices
import com.topjohnwu.magisk.data.network.GithubPageServices
import com.topjohnwu.magisk.data.network.GithubRawServices import com.topjohnwu.magisk.data.network.GithubRawServices
import com.topjohnwu.magisk.ktx.precomputedText import com.topjohnwu.magisk.ktx.precomputedText
import com.topjohnwu.magisk.net.Networking import com.topjohnwu.magisk.net.Networking
@ -30,6 +31,7 @@ val networkingModule = module {
single { createRetrofit(get()) } single { createRetrofit(get()) }
single { createApiService<GithubRawServices>(get(), Const.Url.GITHUB_RAW_URL) } single { createApiService<GithubRawServices>(get(), Const.Url.GITHUB_RAW_URL) }
single { createApiService<GithubApiServices>(get(), Const.Url.GITHUB_API_URL) } single { createApiService<GithubApiServices>(get(), Const.Url.GITHUB_API_URL) }
single { createApiService<GithubPageServices>(get(), Const.Url.GITHUB_PAGE_URL) }
single { createMarkwon(get(), get()) } single { createMarkwon(get(), get()) }
} }

View File

@ -7,7 +7,7 @@ import org.koin.dsl.module
val repositoryModule = module { val repositoryModule = module {
single { MagiskRepository(get()) } single { MagiskRepository(get(), get()) }
single { LogRepository(get()) } single { LogRepository(get()) }
single { StringRepository(get()) } single { StringRepository(get()) }
} }

View File

@ -3,11 +3,14 @@ plugins {
} }
android { android {
val canary = !Config["appVersion"].orEmpty().contains(".")
defaultConfig { defaultConfig {
applicationId = "com.topjohnwu.magisk" applicationId = "com.topjohnwu.magisk"
versionCode = 1 versionCode = 1
versionName = Config["appVersion"] versionName = Config["appVersion"]
buildConfigField("String", "DEV_CHANNEL", Config["DEV_CHANNEL"] ?: "null") buildConfigField("String", "DEV_CHANNEL", Config["DEV_CHANNEL"] ?: "null")
buildConfigField("boolean", "CANARY", if (canary) "true" else "false")
} }
buildTypes { buildTypes {

View File

@ -25,12 +25,6 @@ import static android.R.string.yes;
public class MainActivity extends Activity { public class MainActivity extends Activity {
private static final boolean CANARY = !BuildConfig.VERSION_NAME.contains(".");
private static final String URL =
BuildConfig.DEV_CHANNEL != null ? BuildConfig.DEV_CHANNEL :
"https://raw.githubusercontent.com/topjohnwu/magisk_files/" +
(BuildConfig.DEBUG ? "canary/debug.json" :
(CANARY ? "canary/release.json" : "master/stable.json"));
private static final String APP_NAME = "Magisk Manager"; private static final String APP_NAME = "Magisk Manager";
private String apkLink; private String apkLink;
@ -40,6 +34,15 @@ public class MainActivity extends Activity {
}; };
private Context themed; private Context themed;
private String URL() {
if (BuildConfig.DEV_CHANNEL != null)
return BuildConfig.DEV_CHANNEL;
else if (BuildConfig.CANARY)
return "https://raw.githubusercontent.com/topjohnwu/magisk_files/canary/release.json";
else
return "https://topjohnwu.github.io/magisk_files/stable.json";
}
private void showDialog() { private void showDialog() {
ProgressDialog.show(themed, ProgressDialog.show(themed,
getString(R.string.dling), getString(R.string.dling),
@ -66,7 +69,7 @@ public class MainActivity extends Activity {
themed = new ContextThemeWrapper(this, android.R.style.Theme_DeviceDefault); themed = new ContextThemeWrapper(this, android.R.style.Theme_DeviceDefault);
if (Networking.checkNetworkStatus(this)) { if (Networking.checkNetworkStatus(this)) {
Networking.get(URL) Networking.get(URL())
.setErrorHandler(err) .setErrorHandler(err)
.getAsJSONObject(new JSONLoader()); .getAsJSONObject(new JSONLoader());
} else { } else {