@Override
public void writeTo(final OutputStream outstream) throws IOException {
Objects.requireNonNull(outstream, "no content");
try (final InputStream instream = this.content.execute();) {
final byte[] buffer = new byte[OUTPUT_BUFFER_SIZE];
int size;
if (this.length < 0) {
while ((size = instream.read(buffer)) != -1) {
outstream.write(buffer, 0, size);
}
} else {
long remaining = this.length;
while (remaining > 0) {
size = instream.read(buffer, 0, (int) Math.min(OUTPUT_BUFFER_SIZE, remaining));
if (size == -1) {
break;
}
outstream.write(buffer, 0, size);
remaining -= size;
}
}
}
}