aboutsummaryrefslogtreecommitdiff
path: root/WordPress/src/main/java/org/wordpress/android/networking/StreamingRequest.java
diff options
context:
space:
mode:
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.java41
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);
+ }
+ }
+};
+