pull/590/head
FongMi 12 months ago
parent ce0ab922b3
commit 0ba9e277e3
  1. 1
      app/src/main/java/com/fongmi/android/tv/api/config/LiveConfig.java
  2. 1
      app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java
  3. 1
      catvod/src/main/java/com/github/catvod/net/OkHttp.java
  4. 12
      catvod/src/main/java/com/github/catvod/net/interceptor/RequestInterceptor.java
  5. 29
      catvod/src/main/java/com/github/catvod/net/interceptor/ResponseInterceptor.java

@ -270,6 +270,7 @@ public class LiveConfig {
public void setHeaders(List<JsonElement> items) {
OkHttp.requestInterceptor().setHeaders(items);
OkHttp.responseInterceptor().setHeaders(items);
}
public void setHosts(List<String> hosts) {

@ -258,6 +258,7 @@ public class VodConfig {
public void setHeaders(List<JsonElement> items) {
OkHttp.requestInterceptor().setHeaders(items);
OkHttp.responseInterceptor().setHeaders(items);
}
public List<String> getFlags() {

@ -66,6 +66,7 @@ public class OkHttp {
selector().clear();
authInterceptor().clear();
requestInterceptor().clear();
responseInterceptor().clear();
}
public void setDoh(Doh doh) {

@ -51,16 +51,16 @@ public class RequestInterceptor implements Interceptor {
return chain.proceed(builder.build());
}
private void checkAuth(HttpUrl url, Request.Builder builder) {
String auth = url.queryParameter("auth");
if (auth != null) authMap.put(url.host(), auth);
if (authMap.containsKey(url.host()) && auth == null) builder.url(url.newBuilder().addQueryParameter("auth", authMap.get(url.host())).build());
}
private void checkHeader(HttpUrl url, Request.Builder builder) {
if (!headerMap.containsKey(url.host())) return;
for (Map.Entry<String, JsonElement> entry : headerMap.get(url.host()).entrySet()) {
builder.header(entry.getKey(), entry.getValue().getAsString());
}
}
private void checkAuth(HttpUrl url, Request.Builder builder) {
String auth = url.queryParameter("auth");
if (auth != null) authMap.put(url.host(), auth);
if (authMap.containsKey(url.host()) && auth == null) builder.url(url.newBuilder().addQueryParameter("auth", authMap.get(url.host())).build());
}
}

@ -3,9 +3,14 @@ package com.github.catvod.net.interceptor;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.github.catvod.utils.Json;
import com.google.common.net.HttpHeaders;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.zip.Inflater;
import java.util.zip.InflaterInputStream;
@ -21,15 +26,29 @@ import okio.Okio;
public class ResponseInterceptor implements Interceptor {
private final ConcurrentHashMap<String, String> redirectMap;
private final ConcurrentHashMap<String, JsonObject> headerMap;
public ResponseInterceptor() {
headerMap = new ConcurrentHashMap<>();
redirectMap = new ConcurrentHashMap<>();
}
public synchronized void setHeaders(List<JsonElement> items) {
for (JsonElement item : items) {
JsonObject object = Json.safeObject(item);
headerMap.put(object.get("host").getAsString(), object.get("header").getAsJsonObject());
}
}
public void clear() {
headerMap.clear();
redirectMap.clear();
}
@NonNull
@Override
public Response intercept(@NonNull Chain chain) throws IOException {
Request request = chain.request();
Request request = check(chain.request());
Response response = chain.proceed(request);
if ("deflate".equals(response.header(HttpHeaders.CONTENT_ENCODING))) return deflate(response);
if (response.code() == 406 && redirectMap.containsKey(request.url().toString())) return redirect(request, response);
@ -37,6 +56,14 @@ public class ResponseInterceptor implements Interceptor {
return response;
}
private Request check(Request request) {
String host = request.url().host();
Request.Builder builder = request.newBuilder();
if (!headerMap.containsKey(host)) return request;
for (Map.Entry<String, JsonElement> entry : headerMap.get(host).entrySet()) builder.header(entry.getKey(), entry.getValue().getAsString());
return builder.build();
}
private Response redirect(Request request, Response response) {
return new Response.Builder().request(request).protocol(response.protocol()).code(302).message("Found").header(HttpHeaders.LOCATION, redirectMap.get(request.url().toString())).build();
}

Loading…
Cancel
Save