Refine search
Client client = request.getClient(); String method = request.getMethod(); MediaType mediaType = request.getMediaType(); URI lUri = request.getUri(); for (Map.Entry<String, List<Object>> entry : request.getHeaders().entrySet()) { if (HttpHeaders.AUTHORIZATION.equals(entry.getKey())) { continue; newHeaders.put(entry.getKey(), entry.getValue()); newHeaders.add(HttpHeaders.AUTHORIZATION, newAuthorizationHeader); builder.headers(newHeaders); response.setEntityStream(nextResponse.readEntity(InputStream.class)); MultivaluedMap<String, String> headers = response.getHeaders(); headers.clear(); headers.putAll(nextResponse.getStringHeaders()); response.setStatus(nextResponse.getStatus()); return response.getStatus() != Response.Status.UNAUTHORIZED.getStatusCode();
@Override public void filter(final ClientRequestContext requestContext, final ClientResponseContext responseContext) throws IOException { if (!logger.isLoggable(level)) { return; } final Object requestId = requestContext.getProperty(LOGGING_ID_PROPERTY); final long id = requestId != null ? (Long) requestId : _id.incrementAndGet(); final StringBuilder b = new StringBuilder(); printResponseLine(b, "Client response received", id, responseContext.getStatus()); printPrefixedHeaders(b, id, RESPONSE_PREFIX, responseContext.getHeaders()); if (responseContext.hasEntity() && printEntity(verbosity, responseContext.getMediaType())) { responseContext.setEntityStream(logInboundEntity(b, responseContext.getEntityStream(), MessageUtils.getCharset(responseContext.getMediaType()))); } log(b); } }
@Override public void filter(ClientRequestContext request, ClientResponseContext response) { if (LOGGER.isLoggable(Level.FINEST)) { LOGGER.log(Level.FINEST, "Got response from GitLab:\nURL: {0}\nStatus: {1} {2}\nResponse headers: [\n{3}\n]\nResponse body: {4}", LoggerUtil.toArray(request.getUri(), response.getStatus(), response.getStatusInfo(), toString(response.getHeaders()), getPrettyPrintResponseBody(response))); } }
@Override public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException { if (responseContext.getMediaType() != null && responseContext.getMediaType().isCompatible(MediaType.TEXT_PLAIN_TYPE)) { String newContentType = "application/json" + responseContext.getMediaType().toString().substring(10); responseContext.getHeaders().putSingle("Content-Type", newContentType); } } }
private String getResponseBody(ClientResponseContext context) { try (InputStream entityStream = context.getEntityStream()) { if (entityStream != null) { byte[] bytes = IOUtils.toByteArray(entityStream); context.setEntityStream(new ByteArrayInputStream(bytes)); return new String(bytes); } } catch (IOException e) { LOGGER.log(Level.SEVERE, "Failure during reading the response body", e); context.setEntityStream(new ByteArrayInputStream(new byte[0])); } return ""; }
@Override public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException { if (!responseContext.getStatusInfo().getFamily().equals(Response.Status.Family.REDIRECTION)) { return; } Response resp = requestContext.getClient().target(responseContext.getLocation()).request() .method(requestContext.getMethod()); responseContext.setEntityStream((InputStream) resp.getEntity()); responseContext.setStatusInfo(resp.getStatusInfo()); responseContext.setStatus(resp.getStatus()); } }
if (Response.Status.fromStatusCode(response.getStatus()) == Response.Status.UNAUTHORIZED) { final DigestScheme digestScheme = parseAuthHeaders(response.getHeaders().get(HttpHeaders.WWW_AUTHENTICATE)); if (digestScheme == null) { return false; request, cred)); if (success) { digestCache.put(request.getUri(), digestScheme); } else { digestCache.remove(request.getUri());
@Override public void filter(ClientRequestContext request, ClientResponseContext response) throws IOException { if ("true".equals(request.getProperty(REQUEST_PROPERTY_FILTER_REUSED))) { return; if (response.getStatus() == Response.Status.UNAUTHORIZED.getStatusCode()) { String authString = response.getHeaders().getFirst(HttpHeaders.WWW_AUTHENTICATE); if (authString != null) { final String upperCaseAuth = authString.trim().toUpperCase(); Type operation = (Type) request.getProperty(REQUEST_PROPERTY_OPERATION); if (operation != null) { updateCache(request, !authenticate, operation);
private void useCacheEntry(ClientResponseContext response, BrowserCache.Entry entry) { ByteArrayInputStream bais = new ByteArrayInputStream(entry.getCached()); response.setEntityStream(bais); response.setStatus(200); for (Map.Entry<String, List<String>> header : entry.getHeaders().entrySet()) { response.getHeaders().remove(header.getKey()); for (String val : header.getValue()) { response.getHeaders().add(header.getKey(), val); } } }
@Override public void filter(final ClientRequestContext clientRequestContext, final ClientResponseContext clientResponseContext) throws IOException { logger.debug("HTTP {} Response from {}: {} {}.", clientRequestContext.getMethod(), clientRequestContext.getUri(), clientResponseContext.getStatus(), clientResponseContext.getStatusInfo().getReasonPhrase()); final String responseEntity = getResponseEntity(clientResponseContext); if (clientResponseContext.getStatus() == 400 && responseEntity.contains("invalid_token")) { // Zonky is dumb and throws 400 when it should throw 401 clientResponseContext.setStatus(401); } responseHeaders = clientResponseContext.getHeaders().entrySet().stream() .filter(e -> !e.getValue().isEmpty()) .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().get(0), (a, b) -> a, TreeMap::new)); } }
/** * Checks the response and if basic authentication is required then performs a new request * with basic authentication. * * @param request Request context. * @param response Response context (will be updated with newest response data if the request was repeated). * @return {@code true} if response does not require authentication or if authentication is required, * new request was done with digest authentication information and authentication was successful. * @throws ResponseAuthenticationException in case that basic credentials missing or are in invalid format */ public boolean filterResponseAndAuthenticate(ClientRequestContext request, ClientResponseContext response) { final String authenticate = response.getHeaders().getFirst(HttpHeaders.WWW_AUTHENTICATE); if (authenticate != null && authenticate.trim().toUpperCase().startsWith("BASIC")) { HttpAuthenticationFilter.Credentials credentials = HttpAuthenticationFilter .getCredentials(request, defaultCredentials, HttpAuthenticationFilter.Type.BASIC); if (credentials == null) { throw new ResponseAuthenticationException(null, LocalizationMessages.AUTHENTICATION_CREDENTIALS_MISSING_BASIC()); } return HttpAuthenticationFilter.repeatRequest(request, response, calculateAuthentication(credentials)); } return false; } }
@Override public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException { Object contentEncoding = responseContext.getHeaders().getFirst(HttpHeaders.CONTENT_ENCODING); if ("gzip".equals(contentEncoding)) { responseContext.getHeaders().remove(HttpHeaders.CONTENT_ENCODING); } }
@Override public void filter(ClientRequestContext req, ClientResponseContext res) throws IOException { if (isMethodWithNoContent(req.getMethod()) || isCheckEmptyStream() && !res.hasEntity()) { return; } JweDecryptionOutput out = decrypt(res.getEntityStream()); byte[] bytes = out.getContent(); res.setEntityStream(new ByteArrayInputStream(bytes)); res.getHeaders().putSingle("Content-Length", Integer.toString(bytes.length)); String ct = JoseUtils.checkContentType(out.getHeaders().getContentType(), getDefaultMediaType()); if (ct != null) { res.getHeaders().putSingle("Content-Type", ct); } if (super.isValidateHttpHeaders()) { super.validateHttpHeadersIfNeeded(res.getHeaders(), out.getHeaders()); } }
@Override public void filter(ClientRequestContext request, ClientResponseContext response) throws IOException { StringBuilder debugMsgBuilder = new StringBuilder(); debugMsgBuilder.append("ClientRequest: ").append(request.getMethod()).append("\t"); debugMsgBuilder.append(request.getUri().toASCIIString()).append("\t"); appendObjectHeaders(debugMsgBuilder, "> ", request.getHeaders().entrySet()); appendStringHeaders(debugMsgBuilder, "< ", response.getHeaders().entrySet()); debugMsgBuilder.append(response.getStatusInfo()).append(", length=").append(response.getLength()).append(" "); Long requestStartTime = (Long) request.getProperty(PROPERTY_NANOS); if (requestStartTime != null) { debugMsgBuilder .append((System.nanoTime() - requestStartTime) / MILLISECONDS_PER_NANOSECOND) .append(" ms\t"); } LOG.debug(debugMsgBuilder.toString()); RequestLog.stopTiming(CLIENT_TOTAL_TIMER); }
@Override public void filter(ClientRequestContext reqContext, ClientResponseContext respContext) throws IOException { MultivaluedMap<String, String> headers = respContext.getHeaders(); if (!local) { assertEquals(1, headers.get("Date").size()); } headers.putSingle(HttpHeaders.LOCATION, "http://localhost/redirect"); }
@Override public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException { if (!LOG.isDebugEnabled()) { return; } LOG.debug( "Received '{}' response for '{}' request to '{}'", responseContext.getStatus(), requestContext.getMethod(), requestContext.getUri()); MultivaluedMap<String, String> headers = responseContext.getHeaders(); for (Entry<String, List<String>> entry : headers.entrySet()) { LOG.debug("Received header '{}' with value '{}'", entry.getKey(), entry.getValue()); } }
@Override public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException { long elapsed = timer.get().elapsed(TimeUnit.MILLISECONDS); responseContext.getHeaders().add(HEADER_REQUEST_ID, requestId.get()); logger.info(format("[%s] - %s to %s ended - total time %dms", requestId.get(), requestContext.getMethod(), requestContext.getUri(), elapsed)); requestId.remove(); timer.get().stop(); timer.remove(); } }
@Override public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException { if (responseContext.getStatus() != Response.Status.OK.getStatusCode() && responseContext.hasEntity()) { try { final Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); final Error error = (Error) unmarshaller.unmarshal(responseContext.getEntityStream()); final Response.ResponseBuilder builder = Response.status(responseContext.getStatusInfo()); builder.entity(error); // copy response headers for (Map.Entry<String, List<String>> header : responseContext.getHeaders().entrySet()) { builder.header(header.getKey(), header.getValue()); } throw new LinkedInException(error, builder.build()); } catch (JAXBException e) { // log and ignore LOG.warn("Unable to parse LinkedIn error: {}", e.getMessage(), e); } } } }
@Override public void filter(final ClientRequestContext requestContext, final ClientResponseContext responseContext) throws IOException { final long id = aid.incrementAndGet(); final StringBuilder b = new StringBuilder(); printResponseLine(b, "Client response received", id, responseContext.getStatus()); printPrefixedHeaders(b, id, RESPONSE_PREFIX, responseContext.getHeaders()); if (printEntity && responseContext.hasEntity()) { responseContext.setEntityStream(logInboundEntity(b, responseContext.getEntityStream())); } log(b); }
@Override public void filter(ClientRequestContext req, ClientResponseContext res) throws IOException { JweDecryptionOutput out = decrypt(res.getEntityStream()); byte[] bytes = out.getContent(); res.setEntityStream(new ByteArrayInputStream(bytes)); res.getHeaders().putSingle("Content-Length", Integer.toString(bytes.length)); String ct = JwtUtils.checkContentType(out.getHeaders().getContentType(), getDefaultMediaType()); if (ct != null) { res.getHeaders().putSingle("Content-Type", ct); } }