/** * A uri query parameter of the request message, or empty if no parameter with that name is found. * Returns the first query parameter value if it is repeated. Use {@link #parameters()} to get * all repeated values. */ default Optional<String> parameter(String parameter) { List<String> values = parameters().get(parameter); if (values != null) { return Optional.ofNullable(values.get(0)); } else { return Optional.empty(); } }
@Override public void gatherIncomingCall(OngoingRequest ongoingRequest, Endpoint endpoint) { Request message = ongoingRequest.request(); String fromService = message.service().orElse(null); String method = message.method(); EndpointInfo info = endpoint.info(); String endpointMethodName = info.getJavaMethodName(); CallsGatherer callsGatherer = gatherer.getIncomingCallsGatherer(fromService); EndpointGatherer endpointGatherer = callsGatherer.namedEndpointGatherer(endpointMethodName); endpointGatherer.setUri(info.getUri()); endpointGatherer.addMethod(method); for (String name : message.parameters().keySet()) { endpointGatherer.addQueryParameterName(name); } } }
/** * A uri query parameter of the request message, or empty if no parameter with that name is found. * Returns the first query parameter value if it is repeated. Use {@link #parameters()} to get * all repeated values. */ default Optional<String> parameter(String parameter) { List<String> values = parameters().get(parameter); if (values != null) { return Optional.ofNullable(values.get(0)); } else { return Optional.empty(); } }
private CompletionStage<Response<ByteString>> proxyToScheduler(String path, RequestContext rc) { final HttpUrl.Builder builder = Objects.requireNonNull(HttpUrl.parse(schedulerServiceBaseUrl + SCHEDULER_BASE_PATH + path)) .newBuilder(); ImmutableSortedMap.copyOf(rc.request().parameters()).forEach((name, values) -> values.forEach(value -> builder.addQueryParameter(name, value))); return client.send(withRequestId(rc.request().withUri(builder.build().toString()))); }
public static <T> Middleware<AsyncHandler<Response<T>>, AsyncHandler<Response<T>>> httpLogger( Logger log, RequestAuthenticator authenticator) { return innerHandler -> requestContext -> { final Request request = requestContext.request(); log.info("{}{} {} by {} with headers {} parameters {} and payload {}", "GET".equals(request.method()) ? "" : "[AUDIT] ", request.method(), request.uri(), // TODO: pass in auth context instead of authenticating twice auth(requestContext, authenticator).user().map(idToken -> idToken.getPayload() .getEmail()) .orElse("anonymous"), hideSensitiveHeaders(request.headers()), request.parameters(), request.payload().map(ByteString::utf8).orElse("") .replaceAll("\n", " ")); return innerHandler.invoke(requestContext); }; }