summaryrefslogtreecommitdiffstats
path: root/src/org/apache/http/impl/client/DefaultRedirectHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/apache/http/impl/client/DefaultRedirectHandler.java')
-rw-r--r--src/org/apache/http/impl/client/DefaultRedirectHandler.java183
1 files changed, 0 insertions, 183 deletions
diff --git a/src/org/apache/http/impl/client/DefaultRedirectHandler.java b/src/org/apache/http/impl/client/DefaultRedirectHandler.java
deleted file mode 100644
index 0811b28..0000000
--- a/src/org/apache/http/impl/client/DefaultRedirectHandler.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/DefaultRedirectHandler.java $
- * $Revision: 673450 $
- * $Date: 2008-07-02 10:35:05 -0700 (Wed, 02 Jul 2008) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.impl.client;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.http.Header;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.ProtocolException;
-import org.apache.http.client.CircularRedirectException;
-import org.apache.http.client.RedirectHandler;
-import org.apache.http.client.params.ClientPNames;
-import org.apache.http.client.utils.URIUtils;
-import org.apache.http.params.HttpParams;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.protocol.ExecutionContext;
-
-
-/**
- * Default implementation of {@link RedirectHandler}.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version $Revision: 673450 $
- *
- * @since 4.0
- */
-public class DefaultRedirectHandler implements RedirectHandler {
-
- private final Log log = LogFactory.getLog(getClass());
-
- private static final String REDIRECT_LOCATIONS = "http.protocol.redirect-locations";
-
- public DefaultRedirectHandler() {
- super();
- }
-
- public boolean isRedirectRequested(
- final HttpResponse response,
- final HttpContext context) {
- if (response == null) {
- throw new IllegalArgumentException("HTTP response may not be null");
- }
- int statusCode = response.getStatusLine().getStatusCode();
- switch (statusCode) {
- case HttpStatus.SC_MOVED_TEMPORARILY:
- case HttpStatus.SC_MOVED_PERMANENTLY:
- case HttpStatus.SC_SEE_OTHER:
- case HttpStatus.SC_TEMPORARY_REDIRECT:
- return true;
- default:
- return false;
- } //end of switch
- }
-
- public URI getLocationURI(
- final HttpResponse response,
- final HttpContext context) throws ProtocolException {
- if (response == null) {
- throw new IllegalArgumentException("HTTP response may not be null");
- }
- //get the location header to find out where to redirect to
- Header locationHeader = response.getFirstHeader("location");
- if (locationHeader == null) {
- // got a redirect response, but no location header
- throw new ProtocolException(
- "Received redirect response " + response.getStatusLine()
- + " but no location header");
- }
- String location = locationHeader.getValue();
- if (this.log.isDebugEnabled()) {
- this.log.debug("Redirect requested to location '" + location + "'");
- }
-
- URI uri;
- try {
- uri = new URI(location);
- } catch (URISyntaxException ex) {
- throw new ProtocolException("Invalid redirect URI: " + location, ex);
- }
-
- HttpParams params = response.getParams();
- // rfc2616 demands the location value be a complete URI
- // Location = "Location" ":" absoluteURI
- if (!uri.isAbsolute()) {
- if (params.isParameterTrue(ClientPNames.REJECT_RELATIVE_REDIRECT)) {
- throw new ProtocolException("Relative redirect location '"
- + uri + "' not allowed");
- }
- // Adjust location URI
- HttpHost target = (HttpHost) context.getAttribute(
- ExecutionContext.HTTP_TARGET_HOST);
- if (target == null) {
- throw new IllegalStateException("Target host not available " +
- "in the HTTP context");
- }
-
- HttpRequest request = (HttpRequest) context.getAttribute(
- ExecutionContext.HTTP_REQUEST);
-
- try {
- URI requestURI = new URI(request.getRequestLine().getUri());
- URI absoluteRequestURI = URIUtils.rewriteURI(requestURI, target, true);
- uri = URIUtils.resolve(absoluteRequestURI, uri);
- } catch (URISyntaxException ex) {
- throw new ProtocolException(ex.getMessage(), ex);
- }
- }
-
- if (params.isParameterFalse(ClientPNames.ALLOW_CIRCULAR_REDIRECTS)) {
-
- RedirectLocations redirectLocations = (RedirectLocations) context.getAttribute(
- REDIRECT_LOCATIONS);
-
- if (redirectLocations == null) {
- redirectLocations = new RedirectLocations();
- context.setAttribute(REDIRECT_LOCATIONS, redirectLocations);
- }
-
- URI redirectURI;
- if (uri.getFragment() != null) {
- try {
- HttpHost target = new HttpHost(
- uri.getHost(),
- uri.getPort(),
- uri.getScheme());
- redirectURI = URIUtils.rewriteURI(uri, target, true);
- } catch (URISyntaxException ex) {
- throw new ProtocolException(ex.getMessage(), ex);
- }
- } else {
- redirectURI = uri;
- }
-
- if (redirectLocations.contains(redirectURI)) {
- throw new CircularRedirectException("Circular redirect to '" +
- redirectURI + "'");
- } else {
- redirectLocations.add(redirectURI);
- }
- }
-
- return uri;
- }
-
-}