com.king.platform.net.http.netty.request.InputStreamHttpBody Maven / Gradle / Ivy
// Copyright (C) king.com Ltd 2015
// https://github.com/king/king-http-client
// Author: Magnus Gustafsson
// License: Apache 2.0, https://raw.github.com/king/king-http-client/LICENSE-APACHE
package com.king.platform.net.http.netty.request;
import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelFutureListener;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.stream.ChunkedStream;
import java.io.IOException;
import java.io.InputStream;
public class InputStreamHttpBody implements HttpBody {
private final InputStream inputStream;
private final String contentType;
public InputStreamHttpBody(InputStream inputStream, String contentType) {
this.inputStream = inputStream;
this.contentType = contentType;
}
@Override
public long getContentLength() {
return -1L;
}
@Override
public String getContentType() {
return contentType;
}
@Override
public ChannelFuture writeContent(ChannelHandlerContext ctx) throws IOException {
final InputStream is = inputStream;
Channel channel = ctx.channel();
ChannelFuture channelFuture = channel.write(new ChunkedStream(inputStream), channel.newProgressivePromise());
channelFuture.addListener(new ChannelFutureListener() {
@Override
public void operationComplete(ChannelFuture future) throws Exception {
is.close();
}
});
return channelFuture;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy