@Override public String requestHeader(ClientRequestContext request, String name) { return request.getHeaderString(name); }
@Override public void filter(ClientRequestContext requestContext) throws IOException { try { if (RpcInternalContext.isAttachmentEnable()) { // 补充客户端request长度 RpcInternalContext context = RpcInternalContext.getContext(); context.setAttachment(RpcConstants.INTERNAL_KEY_REQ_SIZE, requestContext.getHeaderString(HttpHeaders.CONTENT_LENGTH)); } RestTracerAdapter.storeTracerInfo(requestContext); } catch (Exception e) { logger.error("the process of rest tracer client request occur error ", e); } } }
@Override public void filter(ClientRequestContext requestContext) throws IOException { try { if (RpcInternalContext.isAttachmentEnable()) { // 补充客户端request长度 RpcInternalContext context = RpcInternalContext.getContext(); context.setAttachment(RpcConstants.INTERNAL_KEY_REQ_SIZE, requestContext.getHeaderString(HttpHeaders.CONTENT_LENGTH)); } RestTracerAdapter.storeTracerInfo(requestContext); } catch (Exception e) { logger.error("the process of rest tracer client request occur error ", e); } } }
@Override public void filter(ClientRequestContext ctx) throws IOException { String encoding = ctx.getHeaderString(HttpHeaders.ACCEPT_ENCODING); if (encoding == null) { ctx.getHeaders().add(HttpHeaders.ACCEPT_ENCODING, "gzip, deflate"); } else { if (!encoding.contains("gzip")) { encoding += ", gzip"; ctx.getHeaders().add(HttpHeaders.ACCEPT_ENCODING, encoding); } } } }
public void cacheIfPossible(ClientRequestContext request, ClientResponseContext response) throws IOException { String cc = (String) response.getHeaderString(HttpHeaders.CACHE_CONTROL); String exp = (String) response.getHeaderString(HttpHeaders.EXPIRES); int expires = -1; if (cc != null) { CacheControl cacheControl = CacheControl.valueOf(cc); if (cacheControl.isNoCache()) return; expires = cacheControl.getMaxAge(); } else if (exp != null) { Date date = DateUtil.parseDate(exp); expires = (int) ((date.getTime() - System.currentTimeMillis()) / 1000); } String lastModified = (String) response.getHeaderString(HttpHeaders.LAST_MODIFIED); String etag = (String) response.getHeaderString(HttpHeaders.ETAG); String contentType = (String) response.getHeaderString(HttpHeaders.CONTENT_TYPE); String accept = (String) request.getHeaderString(HttpHeaders.ACCEPT); byte[] cached = ReadFromStream.readFromStream(1024, response.getEntityStream()); // if Accept is present, use it, if not fallback to response Content-Type MediaType mediaType = accept != null ? MediaType.valueOf(accept) : MediaType.valueOf(contentType); final BrowserCache.Entry entry = cache.put(request.getUri().toString(), mediaType, response.getHeaders(), cached, expires, etag, lastModified); response.setEntityStream(new ByteArrayInputStream(cached)); }
@Override public String getHeader(String headerName) { return ctx.getHeaderString(headerName); }
@Override public String getHeader(String headerName) { return ctx.getHeaderString(headerName); }
@Nullable @Override public String getUserAgent(ClientRequestContext request) { return request.getHeaderString("user-agent"); }
@Override public void filter(ClientRequestContext ctx) throws IOException { String encoding = ctx.getHeaderString(HttpHeaders.ACCEPT_ENCODING); if (encoding == null) { ctx.getHeaders().add(HttpHeaders.ACCEPT_ENCODING, "gzip, deflate"); } else { if (!encoding.contains("gzip")) { encoding += ", gzip"; ctx.getHeaders().add(HttpHeaders.ACCEPT_ENCODING, encoding); } } } }
@Override public void filter(ClientRequestContext ctx) throws IOException { String encoding = ctx.getHeaderString(HttpHeaders.ACCEPT_ENCODING); if (encoding == null) { ctx.getHeaders().add(HttpHeaders.ACCEPT_ENCODING, "gzip, deflate"); } else { if (!encoding.contains("gzip")) { encoding += ", gzip"; ctx.getHeaders().add(HttpHeaders.ACCEPT_ENCODING, encoding); } } } }
@Override public void filter(ClientRequestContext requestContext) throws IOException { if (requestContext.getHeaderString(SseFeature.LAST_EVENT_ID_HEADER) == null) { String lastKnownEventId = (String) requestContext.getConfiguration().getProperty( SseFeature.LAST_EVENT_ID_HEADER); if (lastKnownEventId != null) { requestContext.getHeaders().putSingle(SseFeature.LAST_EVENT_ID_HEADER, lastKnownEventId); } } }
@Override public void filter(ClientRequestContext requestContext) throws IOException { try { if (RpcInternalContext.isAttachmentEnable()) { // 补充客户端request长度 RpcInternalContext context = RpcInternalContext.getContext(); context.setAttachment(RpcConstants.INTERNAL_KEY_REQ_SIZE, requestContext.getHeaderString(HttpHeaders.CONTENT_LENGTH)); } RestTracerAdapter.storeTracerInfo(requestContext); } catch (Exception e) { logger.error("the process of rest tracer client request occur error ", e); } } }
final String accepts = request.getHeaderString(HttpHeaders.ACCEPT); final Key key = new Key(uri, accepts); Entry entry = cache.get(key); request.setProperty(CLIENT_CACHE_CONTROL, request.getHeaderString(HttpHeaders.CACHE_CONTROL));
final String accepts = request.getHeaderString(HttpHeaders.ACCEPT); final Key key = new Key(uri, accepts); Entry entry = cache.get(key); request.setProperty(CLIENT_CACHE_CONTROL, request.getHeaderString(HttpHeaders.CACHE_CONTROL));
public void cacheIfPossible(ClientRequestContext request, ClientResponseContext response) throws IOException { String cc = (String) response.getHeaderString(HttpHeaders.CACHE_CONTROL); String exp = (String) response.getHeaderString(HttpHeaders.EXPIRES); int expires = -1; if (cc != null) { CacheControl cacheControl = CacheControl.valueOf(cc); if (cacheControl.isNoCache()) return; expires = cacheControl.getMaxAge(); } else if (exp != null) { Date date = DateUtil.parseDate(exp); expires = (int) ((date.getTime() - System.currentTimeMillis()) / 1000); } String lastModified = (String) response.getHeaderString(HttpHeaders.LAST_MODIFIED); String etag = (String) response.getHeaderString(HttpHeaders.ETAG); String contentType = (String) response.getHeaderString(HttpHeaders.CONTENT_TYPE); String accept = (String) request.getHeaderString(HttpHeaders.ACCEPT); byte[] cached = ReadFromStream.readFromStream(1024, response.getEntityStream()); // if Accept is present, use it, if not fallback to response Content-Type MediaType mediaType = accept != null ? MediaType.valueOf(accept) : MediaType.valueOf(contentType); final BrowserCache.Entry entry = cache.put(request.getUri().toString(), mediaType, response.getHeaders(), cached, expires, etag, lastModified); response.setEntityStream(new ByteArrayInputStream(cached)); }
@Test public void testExtraction() { URI uri = URI.create("https://myhost/resource"); ClientRequestContext requestContext = mock(ClientRequestContext.class); when(requestContext.getUri()).thenReturn(uri); when(requestContext.getMethod()).thenReturn("GET"); when(requestContext.getHeaderString("user-agent")).thenReturn("java/1.8"); ClientResponseContext responseContext = mock(ClientResponseContext.class); when(responseContext.getStatus()).thenReturn(200); JaxrsClientExtractor extractor = new JaxrsClientExtractor(); assertEquals("myhost", extractor.getHost(requestContext)); assertEquals("GET", extractor.getMethod(requestContext)); assertEquals("/resource", extractor.getPath(requestContext)); assertNull(extractor.getRoute(requestContext)); assertEquals("https://myhost/resource", extractor.getUrl(requestContext)); assertEquals("java/1.8", extractor.getUserAgent(requestContext)); assertEquals(200, extractor.getStatusCode(responseContext)); } }