private void decrementOPTIONSMaxForwardsIfGreaterThen0(final HttpRequest request) { if (!HeaderConstants.OPTIONS_METHOD.equals(request.getMethod())) { return; } final Header maxForwards = request.getFirstHeader(HeaderConstants.MAX_FORWARDS); if (maxForwards == null) { return; } request.removeHeaders(HeaderConstants.MAX_FORWARDS); final int currentMaxForwards = Integer.parseInt(maxForwards.getValue()); request.setHeader(HeaderConstants.MAX_FORWARDS, Integer.toString(currentMaxForwards - 1)); }
Args.notNull(target, "Target"); final StringBuilder buf = new StringBuilder(); final URIAuthority authority = request.getAuthority(); if (authority != null) { final String scheme = request.getScheme(); buf.append(scheme != null ? scheme : URIScheme.HTTP.id).append("://"); buf.append(authority.getHostName()); final String path = request.getPath(); if (path == null) { buf.append("/");
@Test public void testBuildUnconditionalRequestDoesNotUseIfMatch() throws Exception { request.addHeader("If-Match","\"etag\""); final HttpRequest result = impl.buildUnconditionalRequest(request); Assert.assertNull(result.getFirstHeader("If-Match")); }
boolean clientRequestsOurOptions(final HttpRequest request) { if (!HeaderConstants.OPTIONS_METHOD.equals(request.getMethod())) { return false; } if (!"*".equals(request.getRequestUri())) { return false; } final Header h = request.getFirstHeader(HeaderConstants.MAX_FORWARDS); if (!"0".equals(h != null ? h.getValue() : null)) { return false; } return true; }
private RequestProtocolError requestHasWeakETagAndRange(final HttpRequest request) { // TODO: Should these be looking at all the headers marked as Range? final String method = request.getMethod(); if (!(HeaderConstants.GET_METHOD.equals(method))) { return null; } final Header range = request.getFirstHeader(HeaderConstants.RANGE); if (range == null) { return null; } final Header ifRange = request.getFirstHeader(HeaderConstants.IF_RANGE); if (ifRange == null) { return null; } final String val = ifRange.getValue(); if (val.startsWith("W/")) { return RequestProtocolError.WEAK_ETAG_AND_RANGE_ERROR; } return null; }
@Test public void testRequestWithRelativeURI() throws Exception { final HttpRequest request = new BasicHttpRequest("GET", new URI("/stuff")); Assert.assertEquals("GET", request.getMethod()); Assert.assertEquals("/stuff", request.getPath()); Assert.assertEquals(null, request.getAuthority()); Assert.assertEquals(new URI("/stuff"), request.getUri()); }
public static SimpleHttpRequest copy(final HttpRequest original) { Args.notNull(original, "HTTP request"); final SimpleHttpRequest copy = new SimpleHttpRequest(original.getMethod(), original.getRequestUri()); copy.setVersion(original.getVersion()); for (final Iterator<Header> it = original.headerIterator(); it.hasNext(); ) { copy.addHeader(it.next()); } copy.setScheme(original.getScheme()); copy.setAuthority(original.getAuthority()); return copy; }
@Override public HttpRequest copy(final HttpRequest original) { if (original == null) { return null; } final BasicHttpRequest copy = new BasicHttpRequest(original.getMethod(), original.getPath()); copy.setVersion(original.getVersion()); for (final Iterator<Header> it = original.headerIterator(); it.hasNext(); ) { copy.addHeader(it.next()); } copy.setScheme(original.getScheme()); copy.setAuthority(original.getAuthority()); return copy; }
@Test public void testBuildConditionalRequestWithLastModified() { final String theMethod = "GET"; final String theUri = "/theuri"; final String lastModified = "this is my last modified date"; final HttpRequest basicRequest = new BasicHttpRequest(theMethod, theUri); basicRequest.addHeader("Accept-Encoding", "gzip"); final HttpRequest requestWrapper = RequestCopier.INSTANCE.copy(basicRequest); final Header[] headers = new Header[] { new BasicHeader("Date", DateUtils.formatDate(new Date())), new BasicHeader("Last-Modified", lastModified) }; final HttpCacheEntry cacheEntry = HttpTestUtils.makeCacheEntry(headers); final HttpRequest newRequest = impl.buildConditionalRequest(requestWrapper, cacheEntry); Assert.assertNotSame(basicRequest, newRequest); Assert.assertEquals(theMethod, newRequest.getMethod()); Assert.assertEquals(theUri, newRequest.getRequestUri()); Assert.assertEquals(2, newRequest.getHeaders().length); Assert.assertEquals("Accept-Encoding", newRequest.getHeaders()[0].getName()); Assert.assertEquals("gzip", newRequest.getHeaders()[0].getValue()); Assert.assertEquals("If-Modified-Since", newRequest.getHeaders()[1].getName()); Assert.assertEquals(lastModified, newRequest.getHeaders()[1].getValue()); }
@Override public void onRequestHead(final HttpConnection connection, final HttpRequest request) { if (config.getVerbosity() >= 3) { System.out.println(">> " + request.getMethod() + " " + request.getRequestUri()); final Header[] headers = request.getHeaders(); for (final Header header : headers) { System.out.println(">> " + header.toString()); } System.out.println(); } }
URI uri = request.getUri(); if (!uri.isAbsolute()) { uri = URIUtils.rewriteURI(uri, route.getTargetHost(), true); uri = URIUtils.rewriteURI(uri); request.setPath(uri.toASCIIString()); } catch (final URISyntaxException ex) { throw new ProtocolException("Invalid request URI: " + request.getRequestUri(), ex); final URIAuthority authority = request.getAuthority(); if (authority != null) { final CredentialsProvider credsProvider = clientContext.getCredentialsProvider(); if (credsProvider instanceof CredentialsStore) { AuthSupport.extractFromAuthority(request.getScheme(), authority, (CredentialsStore) credsProvider);
private boolean isGet(final HttpRequest request) { return request.getMethod().equals(HeaderConstants.GET_METHOD); }
@Test public void stripsMaxAgeFromRequestIfNoCachePresent() throws Exception { final HttpRequest req = new BasicHttpRequest("GET", "/"); req.setHeader("Cache-Control", "no-cache, max-age=10"); final HttpRequest wrapper = RequestCopier.INSTANCE.copy(req); impl.makeRequestCompliant(wrapper); assertEquals("no-cache", wrapper.getFirstHeader("Cache-Control").getValue()); }
public static boolean equivalent(final HttpRequest r1, final HttpRequest r2) { return equivalent(r1.getVersion(), r2.getVersion()) && LangUtils.equals(r1.getMethod(), r2.getMethod()) && LangUtils.equals(r1.getRequestUri(), r2.getRequestUri()) && isEndToEndHeaderSubset(r1, r2); }
newRequest.setHeaders(request.getHeaders()); final Header eTag = cacheEntry.getFirstHeader(HeaderConstants.ETAG); if (eTag != null) { newRequest.setHeader(HeaderConstants.IF_NONE_MATCH, eTag.getValue()); newRequest.setHeader(HeaderConstants.IF_MODIFIED_SINCE, lastModified.getValue()); newRequest.addHeader(HeaderConstants.CACHE_CONTROL, HeaderConstants.CACHE_CONTROL_MAX_AGE + "=0");
@Override public void handleRequest( final HttpRequest request, final EntityDetails entityDetails, final ResponseChannel responseChannel, final HttpContext context) throws HttpException, IOException { final Header h = request.getFirstHeader(HttpHeaders.AUTHORIZATION); final String challengeResponse = h != null ? authTokenExtractor.extract(h.getValue()) : null; final URIAuthority authority = request.getAuthority(); final String requestUri = request.getRequestUri(); final boolean authenticated = authenticator.authenticate(authority, requestUri, challengeResponse); final Header expect = request.getFirstHeader(HttpHeaders.EXPECT); final boolean expectContinue = expect != null && "100-continue".equalsIgnoreCase(expect.getValue()); if (authenticated) { if (expectContinue) { responseChannel.sendInformation(new BasicClassicHttpResponse(HttpStatus.SC_CONTINUE), context); } exchangeHandler.handleRequest(request, entityDetails, responseChannel, context); } else { final HttpResponse unauthorized = new BasicHttpResponse(HttpStatus.SC_UNAUTHORIZED); final String realm = authenticator.getRealm(authority, requestUri); unauthorized.addHeader(HttpHeaders.WWW_AUTHENTICATE, "Basic realm=\"" + realm + "\""); customizeUnauthorizedResponse(unauthorized); final AsyncResponseProducer responseProducer = new BasicResponseProducer( unauthorized, new BasicAsyncEntityProducer("Unauthorized", ContentType.TEXT_PLAIN)); responseProducerRef.set(responseProducer); responseProducer.sendResponse(responseChannel, context); } }
context.setAttribute(HttpClientContext.HTTP_REQUEST, request); final URIAuthority authority = request.getAuthority(); final String scheme = request.getScheme(); final HttpHost target = authority != null ? new HttpHost(scheme, authority) : route.getTargetHost(); final String via = generateViaHeader(request); request.addHeader("Via",via);
httpRequest.setVersion(HttpVersion.HTTP_2); httpRequest.setScheme(scheme); try { httpRequest.setAuthority(URIAuthority.create(authority)); } catch (final URISyntaxException ex) { throw new ProtocolException(ex.getMessage(), ex); httpRequest.setPath(path); for (int i = 0; i < messageHeaders.size(); i++) { httpRequest.addHeader(messageHeaders.get(i));
@Test public void testSuitableIfFreshAndFreshnessLifetimeGreaterThanRequestMinFresh() { request.addHeader("Cache-Control", "min-fresh=10"); final Header[] headers = { new BasicHeader("Date", DateUtils.formatDate(tenSecondsAgo)), new BasicHeader("Cache-Control", "max-age=3600"), new BasicHeader("Content-Length","128") }; entry = getEntry(headers); Assert.assertTrue(impl.canCachedResponseBeUsed(host, request, entry, now)); }
void recordCacheMiss(final HttpHost target, final HttpRequest request) { cacheMisses.getAndIncrement(); if (log.isTraceEnabled()) { log.debug("Cache miss [host: " + target + "; uri: " + request.getRequestUri() + "]"); } }