Package io.servicetalk.http.utils
Class RedirectingHttpRequesterFilter
- java.lang.Object
-
- io.servicetalk.http.utils.RedirectingHttpRequesterFilter
-
- All Implemented Interfaces:
HttpExecutionStrategyInfluencer
,StreamingHttpClientFilterFactory
,StreamingHttpConnectionFilterFactory
public final class RedirectingHttpRequesterFilter extends java.lang.Object implements StreamingHttpClientFilterFactory, StreamingHttpConnectionFilterFactory, HttpExecutionStrategyInfluencer
A HTTP request filter that performs automatic redirects ifStreamingHttpRequester.request(HttpExecutionStrategy, StreamingHttpRequest)
method receives 3XX status code in theresponse
.Notes:
- This implementation will not parse a payload for 300 (Multiple Choices) response code, if a preferred
choice's URI reference is not returned in the
Location
header. - This implementation creates a redirect request internally with a request target in the
origin-form and assumes that
request target
andhost header
are sufficient for a provided request-to-group-key function. - Depending on its parameters and context:
HttpClient
orHttpConnection
, this filter may be limited to automatically following relative redirects only.
-
-
Constructor Summary
Constructors Constructor Description RedirectingHttpRequesterFilter()
Create a new instance, only performing relative redirects.RedirectingHttpRequesterFilter(boolean onlyRelativeClient)
Create a new instance, performing relative redirects only forHttpConnection
.RedirectingHttpRequesterFilter(boolean onlyRelativeClient, boolean onlyRelativeConnection)
Create a new instance.RedirectingHttpRequesterFilter(boolean onlyRelativeClient, boolean onlyRelativeConnection, int maxRedirects)
Create a new instance.RedirectingHttpRequesterFilter(boolean onlyRelativeClient, int maxRedirects)
Create a new instance, performing relative redirects only forHttpConnection
.RedirectingHttpRequesterFilter(int maxRedirects)
Create a new instance, only performing relative redirects.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description StreamingHttpClientFilter
create(FilterableStreamingHttpClient client)
Creates aStreamingHttpClientFilter
using the providedStreamingHttpClientFilter
.StreamingHttpConnectionFilter
create(FilterableStreamingHttpConnection connection)
Create aStreamingHttpConnectionFilter
using the providedFilterableStreamingHttpConnection
.HttpExecutionStrategy
influenceStrategy(HttpExecutionStrategy strategy)
Optionally modify the passedHttpExecutionStrategy
to a newHttpExecutionStrategy
that suits thisHttpExecutionStrategyInfluencer
.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface io.servicetalk.http.api.StreamingHttpClientFilterFactory
append, asMultiAddressClientFilter
-
Methods inherited from interface io.servicetalk.http.api.StreamingHttpConnectionFilterFactory
append
-
-
-
-
Constructor Detail
-
RedirectingHttpRequesterFilter
public RedirectingHttpRequesterFilter()
Create a new instance, only performing relative redirects.
-
RedirectingHttpRequesterFilter
public RedirectingHttpRequesterFilter(int maxRedirects)
Create a new instance, only performing relative redirects.- Parameters:
maxRedirects
- The maximum number of follow up redirects.
-
RedirectingHttpRequesterFilter
public RedirectingHttpRequesterFilter(boolean onlyRelativeClient)
Create a new instance, performing relative redirects only forHttpConnection
.- Parameters:
onlyRelativeClient
- Limits the redirects to relative paths forHttpClient
filters.
-
RedirectingHttpRequesterFilter
public RedirectingHttpRequesterFilter(boolean onlyRelativeClient, int maxRedirects)
Create a new instance, performing relative redirects only forHttpConnection
.- Parameters:
onlyRelativeClient
- Limits the redirects to relative paths forHttpClient
filters.maxRedirects
- The maximum number of follow up redirects.
-
RedirectingHttpRequesterFilter
public RedirectingHttpRequesterFilter(boolean onlyRelativeClient, boolean onlyRelativeConnection)
Create a new instance.- Parameters:
onlyRelativeClient
- Limits the redirects to relative paths forHttpClient
filters.onlyRelativeConnection
- Limits the redirects to relative paths forHttpConnection
filters.
-
RedirectingHttpRequesterFilter
public RedirectingHttpRequesterFilter(boolean onlyRelativeClient, boolean onlyRelativeConnection, int maxRedirects)
Create a new instance.- Parameters:
onlyRelativeClient
- Limits the redirects to relative paths forHttpClient
filters.onlyRelativeConnection
- Limits the redirects to relative paths forHttpConnection
filters.maxRedirects
- The maximum number of follow up redirects.
-
-
Method Detail
-
create
public StreamingHttpClientFilter create(FilterableStreamingHttpClient client)
Description copied from interface:StreamingHttpClientFilterFactory
Creates aStreamingHttpClientFilter
using the providedStreamingHttpClientFilter
.- Specified by:
create
in interfaceStreamingHttpClientFilterFactory
- Parameters:
client
-FilterableStreamingHttpClient
to filter- Returns:
StreamingHttpClientFilter
using the providedStreamingHttpClientFilter
.
-
create
public StreamingHttpConnectionFilter create(FilterableStreamingHttpConnection connection)
Description copied from interface:StreamingHttpConnectionFilterFactory
Create aStreamingHttpConnectionFilter
using the providedFilterableStreamingHttpConnection
.- Specified by:
create
in interfaceStreamingHttpConnectionFilterFactory
- Parameters:
connection
-FilterableStreamingHttpConnection
to filter- Returns:
StreamingHttpConnectionFilter
using the providedFilterableStreamingHttpConnection
.
-
influenceStrategy
public HttpExecutionStrategy influenceStrategy(HttpExecutionStrategy strategy)
Description copied from interface:HttpExecutionStrategyInfluencer
Optionally modify the passedHttpExecutionStrategy
to a newHttpExecutionStrategy
that suits thisHttpExecutionStrategyInfluencer
.- Specified by:
influenceStrategy
in interfaceHttpExecutionStrategyInfluencer
- Parameters:
strategy
-HttpExecutionStrategy
to influence.- Returns:
HttpExecutionStrategy
that suits thisHttpExecutionStrategyInfluencer
-
-