protected ZuulException proxyError(HttpRequestMessage zuulReq, Throwable t, String errorCauseMsg) { // Flag this as a proxy failure in the RequestContext. Error filter will then use this flag. zuulReq.getContext().setShouldSendErrorResponse(true); LOG.error(String.format("Error making http request to Origin. restClientName=%s, url=%s", this.name, zuulReq.getPathAndQuery()), t); if (errorCauseMsg == null) { if (t.getCause() != null) { errorCauseMsg = t.getCause().getMessage(); } } if (errorCauseMsg == null) errorCauseMsg = "unknown"; return new ZuulException("Proxying error", t, errorCauseMsg); }
public HttpResponseMessage handle(HttpRequestMessage request) { HttpResponseMessage response = new HttpResponseMessage(request.getContext(), request, 200); response.getHeaders().set("Content-Type", "text/plain"); response.setBody("OK".getBytes(CS_UTF8)); return response; } }
public static HttpResponseMessage clientResponseToZuulResponse(HttpRequestMessage zuulRequest, HttpClientResponse<ByteBuf> resp) { HttpResponseMessage zuulResp = new HttpResponseMessage(zuulRequest.getContext(), zuulRequest, 500); // Copy the response headers and info into the RequestContext for use by post filters. if (resp.getStatus() != null) { zuulResp.setStatus(resp.getStatus().code()); } Headers zuulRespHeaders = zuulResp.getHeaders(); for (Map.Entry<String, String> entry : resp.getHeaders().entries()) { // TODO - should we be filtering headers here like we do when using Ribbon? zuulRespHeaders.add(entry.getKey(), entry.getValue()); } return zuulResp; }
protected HttpResponseMessage createHttpResponseMessage(HttpResponse ribbonResp, HttpRequestMessage request) { // Convert to a zuul response object. HttpResponseMessage respMsg = new HttpResponseMessage(request.getContext(), request, 500); respMsg.setStatus(ribbonResp.getStatus()); for (Map.Entry<String, String> header : ribbonResp.getHttpHeaders().getAllHeaders()) { if (ProxyUtils.isValidResponseHeader(header.getKey())) { respMsg.getHeaders().add(header.getKey(), header.getValue()); } } // Body. Observable<ByteBuf> responseBodyObs = ByteBufUtils.fromInputStream(ribbonResp.getInputStream()); respMsg.setBodyStream(responseBodyObs); return respMsg; }
SessionContext ctx = requestMsg.getContext(); final Timing timing = ctx.getTimings().getRequestProxy(); timing.start();
@Override public Observable<HttpResponseMessage> request(HttpRequestMessage requestMsg) SessionContext context = requestMsg.getContext(); RestClient client = (RestClient) ClientFactory.getNamedClient(name); if (client == null) {