aboutsummaryrefslogtreecommitdiff
path: root/WordPress/src/main/java/org/wordpress/android/networking/StreamingRequest.java
blob: 60c6880feb27f469eb89d9ffd70e3b48b46c7d0f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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);
        }
    }
};