You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
FoxMagiskModuleManager/app/src/main/java/com/fox2code/mmm/repo/CustomRepoData.java

60 lines
1.9 KiB
Java

package com.fox2code.mmm.repo;
import com.fox2code.mmm.utils.io.net.Http;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
public final class CustomRepoData extends RepoData {
boolean loadedExternal;
String override;
CustomRepoData(String url, File cacheRoot) {
super(url, cacheRoot);
}
@Override
public boolean isEnabledByDefault() {
return this.override != null || this.loadedExternal;
}
@Override
public String getPreferenceId() {
return this.override == null ?
this.id : this.override;
}
public void quickPrePopulate() throws IOException, JSONException {
JSONObject jsonObject = new JSONObject(
new String(Http.doHttpGet(this.getUrl(),
false), StandardCharsets.UTF_8));
// make sure there's at least a name and a modules or data object
if (!jsonObject.has("name") || (!jsonObject.has("modules") && !jsonObject.has("data"))) {
throw new IllegalArgumentException("Invalid repo: " + this.getUrl());
}
this.name = jsonObject.getString("name").trim();
this.website = jsonObject.optString("website");
this.support = jsonObject.optString("support");
this.donate = jsonObject.optString("donate");
this.submitModule = jsonObject.optString("submitModule");
}
public Object toJSON() {
try {
return new JSONObject()
.put("id", this.id)
.put("name", this.name)
.put("website", this.website)
.put("support", this.support)
.put("donate", this.donate)
.put("submitModule", this.submitModule);
} catch (JSONException ignored) {
return null;
}
}
}