mirror of
https://github.com/Tribufu/TribufuJava
synced 2026-08-07 20:06:23 +00:00
70 lines
1.9 KiB
Java
70 lines
1.9 KiB
Java
/*
|
|
* Tribufu API
|
|
* API to access Tribufu services.
|
|
*
|
|
* The version of the OpenAPI document: 1.3.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.MediaType;
|
|
import okhttp3.ResponseBody;
|
|
|
|
import java.io.IOException;
|
|
|
|
import okio.Buffer;
|
|
import okio.BufferedSource;
|
|
import okio.ForwardingSource;
|
|
import okio.Okio;
|
|
import okio.Source;
|
|
|
|
public class ProgressResponseBody extends ResponseBody {
|
|
|
|
private final ResponseBody responseBody;
|
|
private final ApiCallback callback;
|
|
private BufferedSource bufferedSource;
|
|
|
|
public ProgressResponseBody(ResponseBody responseBody, ApiCallback callback) {
|
|
this.responseBody = responseBody;
|
|
this.callback = callback;
|
|
}
|
|
|
|
@Override
|
|
public MediaType contentType() {
|
|
return responseBody.contentType();
|
|
}
|
|
|
|
@Override
|
|
public long contentLength() {
|
|
return responseBody.contentLength();
|
|
}
|
|
|
|
@Override
|
|
public BufferedSource source() {
|
|
if (bufferedSource == null) {
|
|
bufferedSource = Okio.buffer(source(responseBody.source()));
|
|
}
|
|
return bufferedSource;
|
|
}
|
|
|
|
private Source source(Source source) {
|
|
return new ForwardingSource(source) {
|
|
long totalBytesRead = 0L;
|
|
|
|
@Override
|
|
public long read(Buffer sink, long byteCount) throws IOException {
|
|
long bytesRead = super.read(sink, byteCount);
|
|
// read() returns the number of bytes read, or -1 if this source is exhausted.
|
|
totalBytesRead += bytesRead != -1 ? bytesRead : 0;
|
|
callback.onDownloadProgress(totalBytesRead, responseBody.contentLength(), bytesRead == -1);
|
|
return bytesRead;
|
|
}
|
|
};
|
|
}
|
|
}
|