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; 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 numberOfBytesRead; try { try (InputStream input = content.getStream()) { while ((numberOfBytesRead = input.read(buffer)) > 0) outStream.write(buffer, 0, numberOfBytesRead); } } catch (IOException e) { throw new RedmineCommunicationException(e); } return null; } }