pull/586/head
FongMi 10 months ago
parent 20a43f93f9
commit 87a9a0d229
  1. 23
      catvod/src/main/java/com/github/catvod/net/interceptor/ResponseInterceptor.java

@ -8,6 +8,8 @@ import com.google.common.net.HttpHeaders;
import java.io.IOException;
import java.net.URI;
import java.util.HashMap;
import java.util.Map;
import java.util.zip.Inflater;
import java.util.zip.InflaterInputStream;
@ -21,22 +23,33 @@ import okio.Okio;
public class ResponseInterceptor implements Interceptor {
private final Map<String, String> redirect;
public ResponseInterceptor() {
this.redirect = new HashMap<>();
}
@NonNull
@Override
public Response intercept(@NonNull Chain chain) throws IOException {
Response response = chain.proceed(checkUser(chain));
String encoding = response.header(HttpHeaders.CONTENT_ENCODING);
if ("deflate".equals(encoding)) return deflate(response);
Request request = chain.request();
Response response = chain.proceed(checkUser(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);
return response;
}
private Request checkUser(Chain chain) {
Request request = chain.request();
private Request checkUser(Request request) {
URI uri = request.url().uri();
if (uri.getUserInfo() == null) return request;
return request.newBuilder().header(HttpHeaders.AUTHORIZATION, Util.basic(uri.getUserInfo())).build();
}
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();
}
private Response deflate(Response response) {
InflaterInputStream is = new InflaterInputStream(response.body().byteStream(), new Inflater(true));
return response.newBuilder().headers(response.headers()).body(new ResponseBody() {

Loading…
Cancel
Save