package com.koushikdutta.async.http.body; import com.koushikdutta.async.DataEmitter; import com.koushikdutta.async.DataSink; import com.koushikdutta.async.Util; import com.koushikdutta.async.callback.CompletedCallback; import com.koushikdutta.async.http.AsyncHttpRequest; import java.io.InputStream; public class StreamBody implements AsyncHttpRequestBody<InputStream> { InputStream stream; int length; /** * Construct an http body from a stream * @param stream * @param length Length of stream to read, or value < 0 to read to end */ public StreamBody(InputStream stream, int length) { this.stream = stream; this.length = length; } @Override public void write(AsyncHttpRequest request, DataSink sink, CompletedCallback completed) { Util.pump(stream, length < 0 ? Integer.MAX_VALUE : length, sink, completed); } @Override public void parse(DataEmitter emitter, CompletedCallback completed) { throw new AssertionError("not implemented"); } public static final String CONTENT_TYPE = "application/binary"; @Override public String getContentType() { return CONTENT_TYPE; } @Override public boolean readFullyOnRequest() { throw new AssertionError("not implemented"); } @Override public int length() { return length; } @Override public InputStream get() { return stream; } }