diff --git a/common/src/main/java/ctbrec/io/FlaresolverrClient.java b/common/src/main/java/ctbrec/io/FlaresolverrClient.java new file mode 100644 index 00000000..92529dd5 --- /dev/null +++ b/common/src/main/java/ctbrec/io/FlaresolverrClient.java @@ -0,0 +1,67 @@ +package ctbrec.io; + +import org.json.JSONObject; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.json.JsonMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; + +import okhttp3.*; +import okhttp3.OkHttpClient.Builder; +import ctbrec.GlobalThreadPool; + + +public class FlaresolverrClient { + public String api_url = "http://localhost:8191/v1"; + protected OkHttpClient client = new OkHttpClient(); + protected JsonMapper mapper = new JsonMapper(); + + public FlaresolverrClient() { + } + + public FlaresolverrClient(String apiUrl) { + api_url = apiUrl; + } + + public JsonNode createSession(String name) throws Exception { + var body = mapper.createObjectNode() + .put("cmd", "sessions.create") + .put("session", name); + + return makeApiCall(body); + } + + public JsonNode destroySession(String name) throws Exception { + var body = mapper.createObjectNode() + .put("cmd", "sessions.destroy") + .put("session", name); + + return makeApiCall(body); + } + + public JsonNode getCookies(String url) throws Exception { + return getCookies(url, 60000); + } + + public JsonNode getCookies(String url, int timeout_ms) throws Exception { + var body = mapper.createObjectNode() + .put("cmd", "request.get") + .put("url", url) + .put("maxTimeout", timeout_ms) + .put("returnOnlyCookies", true); + + return makeApiCall(body); + } + + protected JsonNode makeApiCall(ObjectNode body) throws Exception { + var requestBody = RequestBody.create(mapper.writeValueAsString(body), MediaType.get("application/json")); + var request = new Request.Builder() + .url(api_url) + .post(requestBody) + .build(); + + var response = client.newCall(request).execute(); + return mapper.readTree(response.body().string()); + } + +}