@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()); } }
headers.clear(); headers.putAll(nextResponse.getStringHeaders()); response.setStatus(nextResponse.getStatus());
headers.clear(); headers.putAll(nextResponse.getStringHeaders()); response.setStatus(nextResponse.getStatus());
@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()); } }
headers.clear(); headers.putAll(nextResponse.getStringHeaders()); response.setStatus(nextResponse.getStatus());
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); } } }
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); } } }
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)); } }
@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)); } }
headers.clear(); headers.putAll(nextResponse.getStringHeaders()); response.setStatus(nextResponse.getStatus());
headers.clear(); headers.putAll(nextResponse.getStringHeaders()); response.setStatus(nextResponse.getStatus());
headers.clear(); headers.putAll(nextResponse.getStringHeaders()); response.setStatus(nextResponse.getStatus());
headers.clear(); headers.putAll(nextResponse.getStringHeaders()); response.setStatus(nextResponse.getStatus());
@Test void changes400to401() throws IOException { final int expectedCode = 400; final ClientRequestContext ctx = mock(ClientRequestContext.class); final ClientResponseContext ctx2 = mock(ClientResponseContext.class); final ZonkyApiToken token = new ZonkyApiToken("", "", 299); when(ctx2.hasEntity()).thenReturn(true); when(ctx2.getHeaders()).thenReturn(new MultivaluedMapImpl<>()); when(ctx2.getEntityStream()).thenReturn(c(token)); when(ctx2.getStatusInfo()).thenReturn(Response.Status.fromStatusCode(expectedCode)); when(ctx2.getStatus()).thenReturn(expectedCode); final RoboZonkyFilter filter = new AuthenticatedFilter(() -> token); filter.filter(ctx, ctx2); verify(ctx2, times(1)).setStatus(401); } }
headers.clear(); headers.putAll(nextResponse.getStringHeaders()); response.setStatus(nextResponse.getStatus());
headers.clear(); headers.putAll(newResponse.getStringHeaders()); response.setStatus(newResponse.getStatus());