package com.taskadapter.redmineapi.internal;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import com.taskadapter.redmineapi.RedmineCommunicationException;
import com.taskadapter.redmineapi.RedmineException;
import com.taskadapter.redmineapi.internal.comm.BasicHttpResponse;
import com.taskadapter.redmineapi.internal.comm.ContentHandler;
/**
* "Copy bytes" handler.
*
*/
public final class CopyBytesHandler implements ContentHandler<BasicHttpResponse, Void> {
private final OutputStream outStream;
public CopyBytesHandler(OutputStream outStream) {
this.outStream = outStream;
}
@Override
public Void processContent(BasicHttpResponse content)
throws RedmineException {
final byte[] buffer = new byte[4096 * 4];
int readed;
try {
final InputStream input = content.getStream();
try {
while ((readed = input.read(buffer)) > 0)
outStream.write(buffer, 0, readed);
} finally {
input.close();
}
} catch (IOException e) {
throw new RedmineCommunicationException(e);
}
return null;
}
}