diff --git a/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java b/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java index 4aeeb4db6..0c4d534bd 100644 --- a/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java +++ b/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java @@ -26,9 +26,31 @@ public class DefaultInterceptor implements Interceptor { @Override public Response intercept(@NonNull Chain chain) throws IOException { Response response = chain.proceed(getRequest(chain.request())); + String location = response.header(HttpHeaders.LOCATION); String encoding = response.header(HttpHeaders.CONTENT_ENCODING); - if (response.isRedirect() && response.header(HttpHeaders.LOCATION) != null) checkAuth(response); - if (response.body() == null || encoding == null || !encoding.equals("deflate")) return response; + if (response.isRedirect() && location != null) checkAuth(response, location); + if (response.body() != null && "deflate".equals(encoding)) return deflate(response); + return response; + } + + private Request getRequest(Request request) { + URI uri = request.url().uri(); + String url = request.url().toString(); + Request.Builder builder = request.newBuilder(); + boolean local = url.contains(":" + Proxy.getPort() + "/"); + if (url.contains("+") && local) builder.url(url.replace("+", "%2B")); + if (url.contains("gitcode.net")) builder.header(HttpHeaders.USER_AGENT, Util.CHROME); + if (uri.getUserInfo() != null) builder.header(HttpHeaders.AUTHORIZATION, Util.basic(uri.getUserInfo())); + return builder.build(); + } + + private void checkAuth(Response response, String location) { + URI uri = URI.create(location); + if (uri.getUserInfo() == null) return; + response.header(HttpHeaders.AUTHORIZATION, Util.basic(uri.getUserInfo())); + } + + private Response deflate(Response response) { InflaterInputStream is = new InflaterInputStream(response.body().byteStream(), new Inflater(true)); return response.newBuilder().headers(response.headers()).body(new ResponseBody() { @Nullable @@ -49,20 +71,4 @@ public class DefaultInterceptor implements Interceptor { } }).build(); } - - private Request getRequest(Request request) { - URI uri = request.url().uri(); - String url = request.url().toString(); - Request.Builder builder = request.newBuilder(); - boolean local = url.contains(":" + Proxy.getPort() + "/"); - if (url.contains("+") && local) builder.url(url.replace("+", "%2B")); - if (url.contains("gitcode.net")) builder.header(HttpHeaders.USER_AGENT, Util.CHROME); - if (uri.getUserInfo() != null) builder.header(HttpHeaders.AUTHORIZATION, Util.basic(uri.getUserInfo())); - return builder.build(); - } - - private void checkAuth(Response response) { - URI uri = URI.create(response.header(HttpHeaders.LOCATION)); - if (uri.getUserInfo() != null) response.header(HttpHeaders.AUTHORIZATION, Util.basic(uri.getUserInfo())); - } }