Search in sources :

Example 6 with HttpResponseMessageImpl

use of com.netflix.zuul.message.http.HttpResponseMessageImpl in project zuul by Netflix.

the class MissingEndpointHandlingFilter method apply.

@Override
public HttpResponseMessage apply(HttpRequestMessage request) {
    final SessionContext zuulCtx = request.getContext();
    zuulCtx.setErrorResponseSent(true);
    final String errMesg = "Missing Endpoint filter, name = " + name;
    zuulCtx.setError(new ZuulException(errMesg, true));
    LOG.error(errMesg);
    return new HttpResponseMessageImpl(zuulCtx, request, 500);
}
Also used : HttpResponseMessageImpl(com.netflix.zuul.message.http.HttpResponseMessageImpl) SessionContext(com.netflix.zuul.context.SessionContext) ZuulException(com.netflix.zuul.exception.ZuulException)

Example 7 with HttpResponseMessageImpl

use of com.netflix.zuul.message.http.HttpResponseMessageImpl in project zuul by Netflix.

the class GZipResponseFilterTest method setup.

@Before
public void setup() {
    // when(request.getContext()).thenReturn(context);
    when(originalRequest.getHeaders()).thenReturn(originalRequestHeaders);
    filter = Mockito.spy(new GZipResponseFilter());
    response = new HttpResponseMessageImpl(context, request, 99);
    response.getHeaders().set(HttpHeaderNames.CONTENT_TYPE, "text/html");
    when(response.getInboundRequest()).thenReturn(originalRequest);
}
Also used : HttpResponseMessageImpl(com.netflix.zuul.message.http.HttpResponseMessageImpl) Before(org.junit.Before)

Example 8 with HttpResponseMessageImpl

use of com.netflix.zuul.message.http.HttpResponseMessageImpl in project zuul by Netflix.

the class ProxyEndpoint method buildZuulHttpResponse.

private HttpResponseMessage buildZuulHttpResponse(final HttpResponse httpResponse, final StatusCategory statusCategory, final Throwable ex) {
    startedSendingResponseToClient = true;
    // Translate the netty HttpResponse into a zuul HttpResponseMessage.
    final SessionContext zuulCtx = context;
    final int respStatus = httpResponse.status().code();
    final HttpResponseMessage zuulResponse = new HttpResponseMessageImpl(zuulCtx, zuulRequest, respStatus);
    final Headers respHeaders = zuulResponse.getHeaders();
    for (Map.Entry<String, String> entry : httpResponse.headers()) {
        respHeaders.add(entry.getKey(), entry.getValue());
    }
    // a LastHttpContent without any prior HttpContent's.
    if (HttpUtils.hasChunkedTransferEncodingHeader(zuulResponse) || HttpUtils.hasNonZeroContentLengthHeader(zuulResponse)) {
        zuulResponse.setHasBody(true);
    }
    // Store this original response info for future reference (ie. for metrics and access logging purposes).
    zuulResponse.storeInboundResponse();
    channelCtx.channel().attr(ATTR_ZUUL_RESP).set(zuulResponse);
    if (httpResponse instanceof DefaultFullHttpResponse) {
        final ByteBuf chunk = ((DefaultFullHttpResponse) httpResponse).content();
        zuulResponse.bufferBodyContents(new DefaultLastHttpContent(chunk));
    }
    // Request was a success even if server may have responded with an error code 5XX, except for 503.
    if (originConn != null) {
        if (statusCategory == ZuulStatusCategory.FAILURE_ORIGIN_THROTTLED) {
            origin.onRequestExecutionFailed(zuulRequest, originConn.getServer(), attemptNum, new ClientException(ClientException.ErrorType.SERVER_THROTTLED));
        } else {
            origin.onRequestExecutionSuccess(zuulRequest, zuulResponse, originConn.getServer(), attemptNum);
        }
    }
    // Collect some info about the received response.
    origin.recordFinalResponse(zuulResponse);
    origin.recordFinalError(zuulRequest, ex);
    zuulCtx.put(CommonContextKeys.STATUS_CATGEORY, statusCategory);
    zuulCtx.setError(ex);
    zuulCtx.put("origin_http_status", Integer.toString(respStatus));
    return transformResponse(zuulResponse);
}
Also used : DefaultFullHttpResponse(io.netty.handler.codec.http.DefaultFullHttpResponse) HttpResponseMessage(com.netflix.zuul.message.http.HttpResponseMessage) DefaultLastHttpContent(io.netty.handler.codec.http.DefaultLastHttpContent) Headers(com.netflix.zuul.message.Headers) HttpResponseMessageImpl(com.netflix.zuul.message.http.HttpResponseMessageImpl) SessionContext(com.netflix.zuul.context.SessionContext) ClientException(com.netflix.client.ClientException) ByteBuf(io.netty.buffer.ByteBuf) Map(java.util.Map) HashMap(java.util.HashMap)

Example 9 with HttpResponseMessageImpl

use of com.netflix.zuul.message.http.HttpResponseMessageImpl in project zuul by Netflix.

the class ZuulFilterChainHandler method sendResponse.

private void sendResponse(final StatusCategory statusCategory, final int status, ChannelHandlerContext ctx) {
    if (zuulRequest == null) {
        ctx.close();
    } else {
        final SessionContext zuulCtx = zuulRequest.getContext();
        StatusCategoryUtils.storeStatusCategoryIfNotAlreadyFailure(zuulCtx, statusCategory);
        final HttpResponseMessage zuulResponse = new HttpResponseMessageImpl(zuulCtx, zuulRequest, status);
        final Headers headers = zuulResponse.getHeaders();
        headers.add("Connection", "close");
        headers.add("Content-Length", "0");
        zuulResponse.finishBufferedBodyIfIncomplete();
        responseFilterChain.filter(zuulResponse);
        fireEndpointFinish(true);
    }
}
Also used : HttpResponseMessage(com.netflix.zuul.message.http.HttpResponseMessage) Headers(com.netflix.zuul.message.Headers) HttpResponseMessageImpl(com.netflix.zuul.message.http.HttpResponseMessageImpl) SessionContext(com.netflix.zuul.context.SessionContext)

Aggregations

HttpResponseMessageImpl (com.netflix.zuul.message.http.HttpResponseMessageImpl)9 SessionContext (com.netflix.zuul.context.SessionContext)5 Headers (com.netflix.zuul.message.Headers)5 HttpQueryParams (com.netflix.zuul.message.http.HttpQueryParams)3 HttpResponseMessage (com.netflix.zuul.message.http.HttpResponseMessage)3 Before (org.junit.Before)3 ZuulException (com.netflix.zuul.exception.ZuulException)2 HttpRequestMessageImpl (com.netflix.zuul.message.http.HttpRequestMessageImpl)2 ClientException (com.netflix.client.ClientException)1 HttpRequestMessage (com.netflix.zuul.message.http.HttpRequestMessage)1 HttpRequestBuilder (com.netflix.zuul.message.util.HttpRequestBuilder)1 ByteBuf (io.netty.buffer.ByteBuf)1 ChannelHandlerContext (io.netty.channel.ChannelHandlerContext)1 DefaultFullHttpResponse (io.netty.handler.codec.http.DefaultFullHttpResponse)1 DefaultLastHttpContent (io.netty.handler.codec.http.DefaultLastHttpContent)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 Test (org.junit.Test)1