final io.micronaut.http.HttpRequest<Object> parentRequest = ServerRequestContext.currentRequest().orElse(null); return requestURI -> { Flowable<io.micronaut.http.HttpResponse<Object>> streamResponsePublisher = buildStreamExchange(parentRequest, request, requestURI); return streamResponsePublisher.switchMap(response -> { if (!(response instanceof NettyStreamedHttpResponse)) {
/** * @param request The request * @param <I> The input type * @return A {@link Function} */ protected <I> Function<URI, Flowable<ByteBuffer<?>>> buildDataStreamPublisher(io.micronaut.http.HttpRequest<I> request) { final io.micronaut.http.HttpRequest<Object> parentRequest = ServerRequestContext.currentRequest().orElse(null); return requestURI -> { Flowable<io.micronaut.http.HttpResponse<Object>> streamResponsePublisher = buildStreamExchange(parentRequest, request, requestURI); Function<HttpContent, ByteBuffer<?>> contentMapper = message -> { ByteBuf byteBuf = message.content(); return byteBufferFactory.wrap(byteBuf); }; return streamResponsePublisher.switchMap(response -> { if (!(response instanceof NettyStreamedHttpResponse)) { throw new IllegalStateException("Response has been wrapped in non streaming type. Do not wrap the response in client filters for stream requests"); } NettyStreamedHttpResponse nettyStreamedHttpResponse = (NettyStreamedHttpResponse) response; Flowable<HttpContent> httpContentFlowable = Flowable.fromPublisher(nettyStreamedHttpResponse.getNettyResponse()); return httpContentFlowable.map(contentMapper); }); }; }
Flowable<io.micronaut.http.HttpResponse<Object>> streamResponsePublisher = buildStreamExchange(parentRequest, request, requestURI); return streamResponsePublisher.switchMap(response -> { if (!(response instanceof NettyStreamedHttpResponse)) {
final io.micronaut.http.HttpRequest<Object> parentRequest = ServerRequestContext.currentRequest().orElse(null); return requestURI -> { Flowable<io.micronaut.http.HttpResponse<Object>> streamResponsePublisher = buildStreamExchange(parentRequest, request, requestURI); return streamResponsePublisher.switchMap(response -> { if (!(response instanceof NettyStreamedHttpResponse)) {
/** * @param request The request * @param <I> The input type * @return A {@link Function} */ protected <I> Function<URI, Flowable<io.micronaut.http.HttpResponse<ByteBuffer<?>>>> buildExchangeStreamPublisher(io.micronaut.http.HttpRequest<I> request) { final io.micronaut.http.HttpRequest<Object> parentRequest = ServerRequestContext.currentRequest().orElse(null); return requestURI -> { Flowable<io.micronaut.http.HttpResponse<Object>> streamResponsePublisher = buildStreamExchange(parentRequest, request, requestURI); return streamResponsePublisher.switchMap(response -> { if (!(response instanceof NettyStreamedHttpResponse)) { throw new IllegalStateException("Response has been wrapped in non streaming type. Do not wrap the response in client filters for stream requests"); } NettyStreamedHttpResponse<ByteBuffer<?>> nettyStreamedHttpResponse = (NettyStreamedHttpResponse) response; Flowable<HttpContent> httpContentFlowable = Flowable.fromPublisher(nettyStreamedHttpResponse.getNettyResponse()); return httpContentFlowable.map((Function<HttpContent, io.micronaut.http.HttpResponse<ByteBuffer<?>>>) message -> { ByteBuf byteBuf = message.content(); if (log.isTraceEnabled()) { log.trace("HTTP Client Streaming Response Received Chunk (length: {})", byteBuf.readableBytes()); traceBody("Response", byteBuf); } ByteBuffer<?> byteBuffer = byteBufferFactory.wrap(byteBuf); nettyStreamedHttpResponse.setBody(byteBuffer); return nettyStreamedHttpResponse; }); }); }; }
/** * @param request The request * @param <I> The input type * @return A {@link Function} */ protected <I> Function<URI, Flowable<ByteBuffer<?>>> buildDataStreamPublisher(io.micronaut.http.HttpRequest<I> request) { final io.micronaut.http.HttpRequest<Object> parentRequest = ServerRequestContext.currentRequest().orElse(null); return requestURI -> { Flowable<io.micronaut.http.HttpResponse<Object>> streamResponsePublisher = buildStreamExchange(parentRequest, request, requestURI); Function<HttpContent, ByteBuffer<?>> contentMapper = message -> { ByteBuf byteBuf = message.content(); return byteBufferFactory.wrap(byteBuf); }; return streamResponsePublisher.switchMap(response -> { if (!(response instanceof NettyStreamedHttpResponse)) { throw new IllegalStateException("Response has been wrapped in non streaming type. Do not wrap the response in client filters for stream requests"); } NettyStreamedHttpResponse nettyStreamedHttpResponse = (NettyStreamedHttpResponse) response; Flowable<HttpContent> httpContentFlowable = Flowable.fromPublisher(nettyStreamedHttpResponse.getNettyResponse()); return httpContentFlowable.map(contentMapper); }); }; }
/** * @param request The request * @param <I> The input type * @return A {@link Function} */ protected <I> Function<URI, Flowable<ByteBuffer<?>>> buildDataStreamPublisher(io.micronaut.http.HttpRequest<I> request) { final io.micronaut.http.HttpRequest<Object> parentRequest = ServerRequestContext.currentRequest().orElse(null); return requestURI -> { Flowable<io.micronaut.http.HttpResponse<Object>> streamResponsePublisher = buildStreamExchange(parentRequest, request, requestURI); Function<HttpContent, ByteBuffer<?>> contentMapper = message -> { ByteBuf byteBuf = message.content(); return byteBufferFactory.wrap(byteBuf); }; return streamResponsePublisher.switchMap(response -> { if (!(response instanceof NettyStreamedHttpResponse)) { throw new IllegalStateException("Response has been wrapped in non streaming type. Do not wrap the response in client filters for stream requests"); } NettyStreamedHttpResponse nettyStreamedHttpResponse = (NettyStreamedHttpResponse) response; Flowable<HttpContent> httpContentFlowable = Flowable.fromPublisher(nettyStreamedHttpResponse.getNettyResponse()); return httpContentFlowable.map(contentMapper); }); }; }
Flowable<io.micronaut.http.HttpResponse<Object>> streamResponsePublisher = buildStreamExchange(parentRequest, request, requestURI); return streamResponsePublisher.switchMap(response -> { if (!(response instanceof NettyStreamedHttpResponse)) {
Flowable<io.micronaut.http.HttpResponse<Object>> streamResponsePublisher = buildStreamExchange(parentRequest, request, requestURI); return streamResponsePublisher.switchMap(response -> { if (!(response instanceof NettyStreamedHttpResponse)) {