public class DefaultRedirectHandler<I,O> extends java.lang.Object implements RedirectOperator.RedirectHandler<I,O>
RedirectOperator.RedirectHandler.RedirectionContext| Constructor and Description |
|---|
DefaultRedirectHandler(int maxHops,
HttpClient<I,O> client) |
| Modifier and Type | Method and Description |
|---|---|
protected HttpClientRequest<I> |
createRedirectRequest(HttpClientRequest<I> original,
java.net.URI redirectLocation,
int redirectStatus) |
rx.Observable<HttpClientResponse<O>> |
doRedirect(RedirectOperator.RedirectHandler.RedirectionContext context,
HttpClientRequest<I> originalRequest,
HttpClient.HttpClientConfig config)
Performs the redirect operation.
|
protected java.lang.String |
extractRedirectLocation(HttpClientResponse<O> redirectedResponse) |
protected static java.lang.String |
getNettyRequestUri(java.net.URI uri,
java.lang.String originalUriString,
int redirectStatus) |
protected rx.Observable<HttpClientResponse<O>> |
redirect(HttpClientRequest<I> redirectRequest,
HttpClient.HttpClientConfig config) |
boolean |
requiresRedirect(RedirectOperator.RedirectHandler.RedirectionContext context,
HttpClientResponse<O> response)
Asserts whether the passed
response requires a redirect. |
void |
validate(RedirectOperator.RedirectHandler.RedirectionContext context,
HttpClientResponse<O> redirectResponse)
This is invoked if a particular response requires a redirect as evaluated by
RedirectOperator.RedirectHandler.requiresRedirect(RedirectionContext, HttpClientResponse). |
public DefaultRedirectHandler(int maxHops,
HttpClient<I,O> client)
public rx.Observable<HttpClientResponse<O>> doRedirect(RedirectOperator.RedirectHandler.RedirectionContext context, HttpClientRequest<I> originalRequest, HttpClient.HttpClientConfig config)
RedirectOperator.RedirectHandlerRedirectOperator.RedirectHandler.RedirectionContext.newLocation(String)
with the new redirect location.doRedirect in interface RedirectOperator.RedirectHandler<I,O>context - Redirection context.originalRequest - Original request that started this response processing.config - Client config to use while making the redirect request.protected rx.Observable<HttpClientResponse<O>> redirect(HttpClientRequest<I> redirectRequest, HttpClient.HttpClientConfig config)
public boolean requiresRedirect(RedirectOperator.RedirectHandler.RedirectionContext context, HttpClientResponse<O> response)
RedirectOperator.RedirectHandlerresponse requires a redirect. If this returns true then
RedirectOperator.RedirectHandler.doRedirect(RedirectionContext, HttpClientRequest, HttpClient.HttpClientConfig)
will be called for this response if and only if the redirect is valid specified by
RedirectOperator.RedirectHandler.validate(RedirectionContext, HttpClientResponse)requiresRedirect in interface RedirectOperator.RedirectHandler<I,O>context - Redirection context.response - The response to be evaluated for redirects.true if the response needs redirection, else falsepublic void validate(RedirectOperator.RedirectHandler.RedirectionContext context, HttpClientResponse<O> redirectResponse)
RedirectOperator.RedirectHandlerRedirectOperator.RedirectHandler.requiresRedirect(RedirectionContext, HttpClientResponse). If this returns
false the redirect is not performed, instead an error is propagated.
This should throw an exception if the redirect is not valid. eg: If the
max redirects limit is 3 and the redirects till now are 2, then this method should thrown an exception.validate in interface RedirectOperator.RedirectHandler<I,O>context - The redirection context.redirectResponse - The response to be evaluated for redirects.protected java.lang.String extractRedirectLocation(HttpClientResponse<O> redirectedResponse)
protected HttpClientRequest<I> createRedirectRequest(HttpClientRequest<I> original, java.net.URI redirectLocation, int redirectStatus)
protected static java.lang.String getNettyRequestUri(java.net.URI uri,
java.lang.String originalUriString,
int redirectStatus)