78 lines
2.0 KiB
Java
78 lines
2.0 KiB
Java
/*
|
|
* Gitea API.
|
|
* This documentation describes the Gitea API.
|
|
*
|
|
* OpenAPI spec version: 1.1.1
|
|
*
|
|
*
|
|
* NOTE: This class is auto generated by the swagger code generator program.
|
|
* https://github.com/swagger-api/swagger-codegen.git
|
|
* Do not edit the class manually.
|
|
*/
|
|
|
|
|
|
package io.gitea;
|
|
|
|
import com.squareup.okhttp.MediaType;
|
|
import com.squareup.okhttp.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 {
|
|
|
|
public interface ProgressRequestListener {
|
|
void onRequestProgress(long bytesWritten, long contentLength, boolean done);
|
|
}
|
|
|
|
private final RequestBody requestBody;
|
|
|
|
private final ProgressRequestListener progressListener;
|
|
|
|
public ProgressRequestBody(RequestBody requestBody, ProgressRequestListener progressListener) {
|
|
this.requestBody = requestBody;
|
|
this.progressListener = progressListener;
|
|
}
|
|
|
|
@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;
|
|
progressListener.onRequestProgress(bytesWritten, contentLength, bytesWritten == contentLength);
|
|
}
|
|
};
|
|
}
|
|
}
|