mirror of
https://github.com/Tribufu/TribufuJava
synced 2026-08-10 13:21:07 +00:00
85 lines
2.5 KiB
Java
85 lines
2.5 KiB
Java
/*
|
|
* Tribufu API
|
|
* REST API to access Tribufu services.
|
|
*
|
|
* The version of the OpenAPI document: 1.1.0
|
|
* Contact: contact@tribufu.com
|
|
*
|
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
* https://openapi-generator.tech
|
|
* Do not edit the class manually.
|
|
*/
|
|
|
|
|
|
package com.tribufu.generated;
|
|
|
|
import okhttp3.*;
|
|
import okio.Buffer;
|
|
import okio.BufferedSink;
|
|
import okio.GzipSink;
|
|
import okio.Okio;
|
|
|
|
import java.io.IOException;
|
|
|
|
/**
|
|
* Encodes request bodies using gzip.
|
|
*
|
|
* Taken from https://github.com/square/okhttp/issues/350
|
|
*/
|
|
class GzipRequestInterceptor implements Interceptor {
|
|
@Override
|
|
public Response intercept(Chain chain) throws IOException {
|
|
Request originalRequest = chain.request();
|
|
if (originalRequest.body() == null || originalRequest.header("Content-Encoding") != null) {
|
|
return chain.proceed(originalRequest);
|
|
}
|
|
|
|
Request compressedRequest = originalRequest.newBuilder()
|
|
.header("Content-Encoding", "gzip")
|
|
.method(originalRequest.method(), forceContentLength(gzip(originalRequest.body())))
|
|
.build();
|
|
return chain.proceed(compressedRequest);
|
|
}
|
|
|
|
private RequestBody forceContentLength(final RequestBody requestBody) throws IOException {
|
|
final Buffer buffer = new Buffer();
|
|
requestBody.writeTo(buffer);
|
|
return new RequestBody() {
|
|
@Override
|
|
public MediaType contentType() {
|
|
return requestBody.contentType();
|
|
}
|
|
|
|
@Override
|
|
public long contentLength() {
|
|
return buffer.size();
|
|
}
|
|
|
|
@Override
|
|
public void writeTo(BufferedSink sink) throws IOException {
|
|
sink.write(buffer.snapshot());
|
|
}
|
|
};
|
|
}
|
|
|
|
private RequestBody gzip(final RequestBody body) {
|
|
return new RequestBody() {
|
|
@Override
|
|
public MediaType contentType() {
|
|
return body.contentType();
|
|
}
|
|
|
|
@Override
|
|
public long contentLength() {
|
|
return -1; // We don't know the compressed length in advance!
|
|
}
|
|
|
|
@Override
|
|
public void writeTo(BufferedSink sink) throws IOException {
|
|
BufferedSink gzipSink = Okio.buffer(new GzipSink(sink));
|
|
body.writeTo(gzipSink);
|
|
gzipSink.close();
|
|
}
|
|
};
|
|
}
|
|
}
|