pull/590/head
FongMi 9 months ago
parent 5ffaa80c6f
commit 3a585ad0e8
  1. 13
      catvod/src/main/java/com/github/catvod/net/interceptor/AuthInterceptor.java
  2. 27
      catvod/src/main/java/com/github/catvod/net/interceptor/RequestInterceptor.java
  3. 12
      catvod/src/main/java/com/github/catvod/net/interceptor/ResponseInterceptor.java

@ -7,7 +7,6 @@ import com.google.common.net.HttpHeaders;
import java.io.IOException;
import java.net.URI;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import okhttp3.Interceptor;
@ -16,14 +15,14 @@ import okhttp3.Response;
public class AuthInterceptor implements Interceptor {
private final Map<String, String> userMap;
private ConcurrentHashMap<String, String> user;
public AuthInterceptor() {
userMap = new ConcurrentHashMap<>();
private ConcurrentHashMap<String, String> user() {
return user == null ? user = new ConcurrentHashMap<>() : user;
}
public void clear() {
userMap.clear();
user().clear();
}
@NonNull
@ -35,7 +34,7 @@ public class AuthInterceptor implements Interceptor {
String host = request.url().host();
String user = request.url().uri().getUserInfo();
String header = response.header(HttpHeaders.WWW_AUTHENTICATE);
if (user == null && userMap.containsKey(host)) user = userMap.get(host);
if (user == null && user().containsKey(host)) user = user().get(host);
if (user == null) return response;
else response.close();
String auth = digest(header) ? Util.digest(user, header, request) : Util.basic(user);
@ -49,7 +48,7 @@ public class AuthInterceptor implements Interceptor {
private Request check(Request request) {
URI uri = request.url().uri();
if (uri.getUserInfo() == null) return request;
userMap.put(request.url().host(), uri.getUserInfo());
user().put(request.url().host(), uri.getUserInfo());
return request.newBuilder().header(HttpHeaders.AUTHORIZATION, Util.basic(uri.getUserInfo())).build();
}
}

@ -20,24 +20,27 @@ import okhttp3.Response;
public class RequestInterceptor implements Interceptor {
private final ConcurrentHashMap<String, String> authMap;
private final ConcurrentHashMap<String, JsonObject> headerMap;
private ConcurrentHashMap<String, String> auth;
private ConcurrentHashMap<String, JsonObject> header;
public RequestInterceptor() {
authMap = new ConcurrentHashMap<>();
headerMap = new ConcurrentHashMap<>();
private ConcurrentHashMap<String, String> auth() {
return auth == null ? auth = new ConcurrentHashMap<>() : auth;
}
private ConcurrentHashMap<String, JsonObject> header() {
return header == null ? header = new ConcurrentHashMap<>() : header;
}
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());
header().put(object.get("host").getAsString(), object.get("header").getAsJsonObject());
}
}
public void clear() {
authMap.clear();
headerMap.clear();
auth().clear();
header().clear();
}
@NonNull
@ -53,15 +56,15 @@ public class RequestInterceptor implements Interceptor {
}
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()) {
if (!header().containsKey(url.host())) return;
for (Map.Entry<String, JsonElement> entry : header().get(url.host()).entrySet()) {
builder.header(entry.getKey(), entry.getValue().getAsString());
}
}
private void checkAuthUser(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());
if (auth != null) auth().put(url.host(), auth);
if (auth().containsKey(url.host()) && auth == null) builder.url(url.newBuilder().addQueryParameter("auth", auth().get(url.host())).build());
}
}

@ -20,10 +20,10 @@ import okio.Okio;
public class ResponseInterceptor implements Interceptor {
private final ConcurrentHashMap<String, String> redirect;
private ConcurrentHashMap<String, String> redirect;
public ResponseInterceptor() {
redirect = new ConcurrentHashMap<>();
private ConcurrentHashMap<String, String> redirect() {
return redirect == null ? redirect = new ConcurrentHashMap<>() : redirect;
}
@NonNull
@ -32,13 +32,13 @@ public class ResponseInterceptor implements Interceptor {
Request request = chain.request();
Response response = chain.proceed(request);
if ("deflate".equals(response.header(HttpHeaders.CONTENT_ENCODING))) return deflate(response);
if (response.code() == 302) redirect.put(response.header(HttpHeaders.LOCATION), request.url().toString());
if (response.code() == 406 && redirect.containsKey(request.url().toString())) return redirect(request, response);
if (response.code() == 302) redirect().put(response.header(HttpHeaders.LOCATION), request.url().toString());
if (response.code() == 406 && redirect().containsKey(request.url().toString())) return redirect(request, response);
return response;
}
private Response redirect(Request request, Response response) {
return new Response.Builder().request(request).protocol(response.protocol()).code(302).message("Found").header(HttpHeaders.LOCATION, redirect.get(request.url().toString())).build();
return new Response.Builder().request(request).protocol(response.protocol()).code(302).message("Found").header(HttpHeaders.LOCATION, redirect().get(request.url().toString())).build();
}
private Response deflate(Response response) {

Loading…
Cancel
Save