@Override public Headers headers() { return request.headers(); }
@Override public Iterator<Map.Entry<String, String>> iterator() { Map<String, String> map = StreamSupport.stream(request.headers().spliterator(), true) .collect( Collectors.toMap( entry -> entry.getKey().toString(), entry -> entry.getValue().toString())); return map.entrySet().iterator(); }
public SegmentedRequestData(Request request, SegmentedData data, TraceInfo traceInfo) { this.request = request; this.data = data; this.traceInfo = traceInfo == null ? new TraceInfo(request.headers()) : traceInfo; }
private void appendXForwardedFor(ChannelHandlerContext ctx, Request request) { val remoteAddressAndPort = addressHelper.extractRemoteAddressAndPort(ctx.channel()); if (remoteAddressAndPort != null) { val rawXFF = request.headers().get(X_FORWARDED_FOR); if (rawXFF == null || rawXFF.toString().trim().isEmpty()) { request.headers().set(X_FORWARDED_FOR, remoteAddressAndPort); } else { val newXFF = rawXFF.toString().trim() + ", " + remoteAddressAndPort; request.headers().set(X_FORWARDED_FOR, newXFF); } } }
@Override public void put(final String key, final String value) { httpRequest.headers().set(key.toLowerCase(), value); }
protected String getOriginatingAddressAndPort(ChannelHandlerContext ctx, Request request) { val rawXFF = request.headers().get(X_FORWARDED_FOR); if (rawXFF == null || rawXFF.toString().trim().isEmpty()) { return addressHelper.extractRemoteAddressAndPort(ctx.channel()); } else { String stringXFF = rawXFF.toString(); if (stringXFF.contains(",")) { // extract originating address from list of addresses return stringXFF.substring(0, stringXFF.indexOf(",")); } else { // XFF only has one address return stringXFF; } } }
default String host() { return headers().get(HttpHeaderNames.HOST.toString()); }
HttpRequest buildRequest(Request request) { if (!request.headers().contains(HttpHeaderNames.CONTENT_TYPE)) { request.headers().set(HttpHeaderNames.CONTENT_TYPE, "text/plain; charset=UTF-8"); request.headers().set(HttpHeaderNames.CONNECTION, HttpHeaderValues.KEEP_ALIVE); request.method(), request.path(), request.headers().http1Headers(false, true));
public void onRequest(ChannelHandlerContext ctx, Request request) { String requestorIpAddress = remoteIp(ctx); if (request.headers().get("x-remote-ip") != null) { requestorIpAddress = request.headers().get("x-remote-ip"); request.headers().set("x-remote-ip", requestorIpAddress); .withTag("http.request.originating-ip-address", requestorIpAddress); StreamSupport.stream(request.headers().spliterator(), false) .forEach( (entry) -> {
public void onRequest(ChannelHandlerContext ctx, Request request) { String requestorIpAddress = remoteIp(ctx); if (request.headers().get("x-remote-ip") != null) { requestorIpAddress = request.headers().get("x-remote-ip"); request.headers().set("x-remote-ip", requestorIpAddress); .withTag("http.request.originating-ip-address", requestorIpAddress); StreamSupport.stream(request.headers().spliterator(), false) .forEach( (entry) -> {
buf.append("REQUEST_URI: ").append(request.path()).append("\r\n\r\n"); Headers headers = request.headers(); if (!headers.isEmpty()) { for (Map.Entry<CharSequence, CharSequence> h : headers) {
private void writeRequest(ChannelHandlerContext ctx, Request request, ChannelPromise promise) { /* // TOOD(CK): define ACCEPT? if (!response.headers().contains(HttpHeaderNames.CONTENT_TYPE)) { response.headers().set(HttpHeaderNames.CONTENT_TYPE, "text/plain; charset=UTF-8"); } */ Http2Headers headers = request.headers().http2Headers(); headers.authority(request.host()).method(request.method().asciiName()).path(request.path()); int streamId = request.streamId(); if (request instanceof FullRequest) { if (request.body().readableBytes() > 0) { PromiseCombiner combiner = new PromiseCombiner(); combiner.add(ctx.write(Http2Request.build(streamId, headers, false), ctx.newPromise())); Http2DataFrame data = new DefaultHttp2DataFrame(request.body(), true); combiner.add(ctx.write(Http2Request.build(streamId, data, true), ctx.newPromise())); combiner.finish(promise); } else { ctx.write(Http2Request.build(streamId, headers, true), promise); } } else { ctx.write(Http2Request.build(streamId, headers, false), promise); } }
public Request buildRequest(Request request, String proxyHost, String path) { Request result; if (request instanceof FullRequest) { result = DefaultFullRequest.builder() .body(request.body()) .method(request.method()) .path(path) .streamId(request.streamId()) .headers(request.headers()) .httpTraceInfo(request.httpTraceInfo()) .host(proxyHost) .build(); } else if (request instanceof SegmentedRequest) { result = DefaultSegmentedRequest.builder() .method(request.method()) .path(path) .streamId(request.streamId()) .headers(request.headers()) .httpTraceInfo(request.httpTraceInfo()) .host(proxyHost) .build(); } else { // this should never happen! log.error("Unknown request type: {}", request); result = null; } return result; }