From c0ced579247d862326c27810b1ef6fa15fd9744d Mon Sep 17 00:00:00 2001 From: FongMi Date: Mon, 18 Dec 2023 15:06:47 +0800 Subject: [PATCH] Clean code --- .../java/com/github/catvod/utils/Json.java | 9 ++++ .../com/undcover/freedom/pyramid/Spider.java | 45 +++++-------------- 2 files changed, 19 insertions(+), 35 deletions(-) diff --git a/catvod/src/main/java/com/github/catvod/utils/Json.java b/catvod/src/main/java/com/github/catvod/utils/Json.java index 5a9fb5c25..33089b0cd 100644 --- a/catvod/src/main/java/com/github/catvod/utils/Json.java +++ b/catvod/src/main/java/com/github/catvod/utils/Json.java @@ -1,5 +1,7 @@ package com.github.catvod.utils; +import androidx.collection.ArrayMap; + import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; @@ -66,6 +68,13 @@ public class Json { return map; } + public static ArrayMap toArrayMap(JsonElement element) { + ArrayMap map = new ArrayMap<>(); + JsonObject object = safeObject(element); + for (String key : object.keySet()) map.put(key, safeString(object, key)); + return map; + } + public static JsonObject toObject(Map map) { JsonObject object = new JsonObject(); for (String key : map.keySet()) object.addProperty(key, map.get(key)); diff --git a/pyramid/src/main/java/com/undcover/freedom/pyramid/Spider.java b/pyramid/src/main/java/com/undcover/freedom/pyramid/Spider.java index 8c2309ffa..bb3947b97 100644 --- a/pyramid/src/main/java/com/undcover/freedom/pyramid/Spider.java +++ b/pyramid/src/main/java/com/undcover/freedom/pyramid/Spider.java @@ -1,21 +1,19 @@ package com.undcover.freedom.pyramid; import android.content.Context; -import android.text.TextUtils; import androidx.collection.ArrayMap; import com.chaquo.python.PyObject; import com.github.catvod.Proxy; import com.github.catvod.net.OkHttp; +import com.github.catvod.utils.Json; import com.google.gson.Gson; - -import org.json.JSONException; -import org.json.JSONObject; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; import java.io.ByteArrayInputStream; import java.util.HashMap; -import java.util.Iterator; import java.util.List; import java.util.Map; @@ -93,16 +91,15 @@ public class Spider extends com.github.catvod.crawler.Spider { List list = app.callAttr("localProxy", obj, gson.toJson(params)).asList(); int code = list.get(0).toInt(); String type = list.get(1).toString(); - String action = list.get(2).toString(); String content = list.get(3).toString(); - JSONObject object = new JSONObject(action); - String url = object.optString("url"); - Headers header = getHeader(object.optString("header")); - ArrayMap param = getParam(object.optString("param")); - if (object.optString("type").equals("stream")) { - return new Object[]{code, type, OkHttp.newCall(url, header, param).execute().body().byteStream()}; + JsonObject action = JsonParser.parseString(list.get(2).toString()).getAsJsonObject(); + Headers headers = Headers.of(Json.toMap(action.get("header"))); + String url = action.get("url").getAsString(); + if (action.get("type").getAsString().equals("stream")) { + ArrayMap param = Json.toArrayMap(action.get("param")); + return new Object[]{code, type, OkHttp.newCall(url, headers, param).execute().body().byteStream()}; } else { - if (content.isEmpty()) content = OkHttp.newCall(url, header).execute().body().string(); + if (content.isEmpty()) content = OkHttp.newCall(url, headers).execute().body().string(); return new Object[]{code, type, new ByteArrayInputStream(replaceProxy(content).getBytes())}; } } @@ -110,26 +107,4 @@ public class Spider extends com.github.catvod.crawler.Spider { private String replaceProxy(String content) { return content.replace("http://127.0.0.1:UndCover/proxy", Proxy.getUrl(true)); } - - private Headers getHeader(String header) throws JSONException { - Headers.Builder builder = new Headers.Builder(); - if (TextUtils.isEmpty(header)) return builder.build(); - JSONObject object = new JSONObject(header); - for (Iterator iterator = object.keys(); iterator.hasNext(); ) { - String key = iterator.next(); - builder.add(key, object.optString(key)); - } - return builder.build(); - } - - private ArrayMap getParam(String param) throws JSONException { - ArrayMap params = new ArrayMap<>(); - if (TextUtils.isEmpty(param)) return params; - JSONObject object = new JSONObject(param); - for (Iterator iterator = object.keys(); iterator.hasNext(); ) { - String key = iterator.next(); - params.put(key, object.optString(key)); - } - return params; - } }