mirror of
https://github.com/Tribufu/TribufuJava
synced 2026-08-15 07:41:05 +00:00
73 lines
1.8 KiB
Java
73 lines
1.8 KiB
Java
/*
|
|
* Tribufu API
|
|
* API to access Tribufu services.
|
|
*
|
|
* The version of the OpenAPI document: 1.4.3
|
|
* 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.MediaType;
|
|
import okhttp3.RequestBody;
|
|
|
|
import java.io.IOException;
|
|
|
|
import okio.Buffer;
|
|
import okio.BufferedSink;
|
|
import okio.ForwardingSink;
|
|
import okio.Okio;
|
|
import okio.Sink;
|
|
|
|
public class ProgressRequestBody extends RequestBody {
|
|
|
|
private final RequestBody requestBody;
|
|
|
|
private final ApiCallback callback;
|
|
|
|
public ProgressRequestBody(RequestBody requestBody, ApiCallback callback) {
|
|
this.requestBody = requestBody;
|
|
this.callback = callback;
|
|
}
|
|
|
|
@Override
|
|
public MediaType contentType() {
|
|
return requestBody.contentType();
|
|
}
|
|
|
|
@Override
|
|
public long contentLength() throws IOException {
|
|
return requestBody.contentLength();
|
|
}
|
|
|
|
@Override
|
|
public void writeTo(BufferedSink sink) throws IOException {
|
|
BufferedSink bufferedSink = Okio.buffer(sink(sink));
|
|
requestBody.writeTo(bufferedSink);
|
|
bufferedSink.flush();
|
|
}
|
|
|
|
private Sink sink(Sink sink) {
|
|
return new ForwardingSink(sink) {
|
|
|
|
long bytesWritten = 0L;
|
|
long contentLength = 0L;
|
|
|
|
@Override
|
|
public void write(Buffer source, long byteCount) throws IOException {
|
|
super.write(source, byteCount);
|
|
if (contentLength == 0) {
|
|
contentLength = contentLength();
|
|
}
|
|
|
|
bytesWritten += byteCount;
|
|
callback.onUploadProgress(bytesWritten, contentLength, bytesWritten == contentLength);
|
|
}
|
|
};
|
|
}
|
|
}
|