diff options
Diffstat (limited to 'WordPress/src/main/java/org/wordpress/android/networking/StreamingRequest.java')
-rw-r--r-- | WordPress/src/main/java/org/wordpress/android/networking/StreamingRequest.java | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/networking/StreamingRequest.java b/WordPress/src/main/java/org/wordpress/android/networking/StreamingRequest.java new file mode 100644 index 000000000..60c6880fe --- /dev/null +++ b/WordPress/src/main/java/org/wordpress/android/networking/StreamingRequest.java @@ -0,0 +1,41 @@ +package org.wordpress.android.networking; + +import java.io.File; +import java.io.IOException; + +import okhttp3.MediaType; +import okhttp3.RequestBody; +import okhttp3.internal.Util; +import okio.BufferedSink; +import okio.Okio; +import okio.Source; + +public class StreamingRequest extends RequestBody { + public static final int CHUNK_SIZE = 2048; + + private final File mFile; + + public StreamingRequest(File file) { + mFile = file; + } + + @Override + public MediaType contentType() { + return MediaType.parse("multipart/form-data"); + } + + @Override + public void writeTo(BufferedSink sink) throws IOException { + Source source = null; + try { + source = Okio.source(mFile); + + while (source.read(sink.buffer(), CHUNK_SIZE) != -1) { + sink.flush(); + } + } finally { + Util.closeQuietly(source); + } + } +}; + |