/** * @return The selected {@link ServiceInstance} */ default Publisher<ServiceInstance> select() { return select(null); }
/** * @param request The request * @param <I> The input type * @return A {@link Publisher} with the resolved URI */ protected <I> Publisher<URI> resolveRequestURI(io.micronaut.http.HttpRequest<I> request) { URI requestURI = request.getUri(); if (requestURI.getScheme() != null) { // if the request URI includes a scheme then it is fully qualified so use the direct server return Publishers.just(requestURI); } else { return Publishers.map(loadBalancer.select(getLoadBalancerDiscriminator()), server -> { Optional<String> authInfo = server.getMetadata().get(io.micronaut.http.HttpHeaders.AUTHORIZATION_INFO, String.class); if (request instanceof MutableHttpRequest) { if (authInfo.isPresent()) { ((MutableHttpRequest) request).getHeaders().auth(authInfo.get()); } } return server.resolve(resolveRequestURI(requestURI)); } ); } }
/** * @return The selected {@link ServiceInstance} */ default Publisher<ServiceInstance> select() { return select(null); }
/** * @return The selected {@link ServiceInstance} */ default Publisher<ServiceInstance> select() { return select(null); }
/** * @param request The request * @param <I> The input type * @return A {@link Publisher} with the resolved URI */ protected <I> Publisher<URI> resolveRequestURI(io.micronaut.http.HttpRequest<I> request) { URI requestURI = request.getUri(); if (requestURI.getScheme() != null) { // if the request URI includes a scheme then it is fully qualified so use the direct server return Publishers.just(requestURI); } else { return Publishers.map(loadBalancer.select(getLoadBalancerDiscriminator()), server -> { Optional<String> authInfo = server.getMetadata().get(io.micronaut.http.HttpHeaders.AUTHORIZATION_INFO, String.class); if (request instanceof MutableHttpRequest) { if (authInfo.isPresent()) { ((MutableHttpRequest) request).getHeaders().auth(authInfo.get()); } } return server.resolve(resolveRequestURI(requestURI)); } ); } }
/** * @param request The request * @param <I> The input type * @return A {@link Publisher} with the resolved URI */ protected <I> Publisher<URI> resolveRequestURI(io.micronaut.http.HttpRequest<I> request) { URI requestURI = request.getUri(); if (requestURI.getScheme() != null) { // if the request URI includes a scheme then it is fully qualified so use the direct server return Publishers.just(requestURI); } else { return Publishers.map(loadBalancer.select(getLoadBalancerDiscriminator()), server -> { Optional<String> authInfo = server.getMetadata().get(io.micronaut.http.HttpHeaders.AUTHORIZATION_INFO, String.class); if (request instanceof MutableHttpRequest) { if (authInfo.isPresent()) { ((MutableHttpRequest) request).getHeaders().auth(authInfo.get()); } } return server.resolve(resolveRequestURI(requestURI)); } ); } }