Add fetchArray for headers, proxy, rules and doh

release
FongMi 1 month ago
parent 9f1f21a305
commit ce4c4b7ae3
  1. 21
      app/src/main/java/com/fongmi/android/tv/api/config/BaseConfig.java
  2. 6
      app/src/main/java/com/fongmi/android/tv/api/config/LiveConfig.java
  3. 8
      app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java

@ -9,9 +9,14 @@ import com.fongmi.android.tv.event.ConfigEvent;
import com.fongmi.android.tv.impl.Callback;
import com.fongmi.android.tv.server.Server;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.UrlUtil;
import com.github.catvod.bean.Header;
import com.github.catvod.bean.Proxy;
import com.github.catvod.net.OkHttp;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import java.io.InterruptedIOException;
import java.util.List;
@ -94,4 +99,20 @@ abstract class BaseConfig {
if (e instanceof InterruptedIOException) return true;
return e.getCause() instanceof InterruptedIOException;
}
protected JsonArray fetchArray(JsonObject object, String key) {
if (!object.has(key)) return new JsonArray();
JsonElement element = object.get(key);
if (element.isJsonArray()) return element.getAsJsonArray();
if (!element.isJsonPrimitive()) return new JsonArray();
try {
String value = element.getAsString().trim();
String json = OkHttp.string(UrlUtil.convert(value));
if (TextUtils.isEmpty(json)) return new JsonArray();
JsonElement parsed = JsonParser.parseString(json);
return parsed.isJsonArray() ? parsed.getAsJsonArray() : new JsonArray();
} catch (Exception e) {
return new JsonArray();
}
}
}

@ -158,9 +158,9 @@ public class LiveConfig extends BaseConfig {
}
private void initList(JsonObject object) {
setHeaders(Header.arrayFrom(object.getAsJsonArray("headers")));
setProxy(Proxy.arrayFrom(object.getAsJsonArray("proxy")));
setRules(Rule.arrayFrom(object.getAsJsonArray("rules")));
setHeaders(Header.arrayFrom(fetchArray(object, "headers")));
setProxy(Proxy.arrayFrom(fetchArray(object, "proxy")));
setRules(Rule.arrayFrom(fetchArray(object, "rules")));
setHosts(Json.safeListString(object, "hosts"));
setAds(Json.safeListString(object, "ads"));
}

@ -144,10 +144,10 @@ public class VodConfig extends BaseConfig {
}
private void initList(JsonObject object) {
setHeaders(Header.arrayFrom(object.getAsJsonArray("headers")));
setProxy(Proxy.arrayFrom(object.getAsJsonArray("proxy")));
setRules(Rule.arrayFrom(object.getAsJsonArray("rules")));
setDoh(Doh.arrayFrom(object.getAsJsonArray("doh")));
setHeaders(Header.arrayFrom(fetchArray(object, "headers")));
setProxy(Proxy.arrayFrom(fetchArray(object, "proxy")));
setRules(Rule.arrayFrom(fetchArray(object, "rules")));
setDoh(Doh.arrayFrom(fetchArray(object, "doh")));
setFlags(Json.safeListString(object, "flags"));
setHosts(Json.safeListString(object, "hosts"));
setAds(Json.safeListString(object, "ads"));

Loading…
Cancel
Save