class RedirectingHttpRequesterFilter implements StreamingHttpClientFilterFactory,
                                                             StreamingHttpConnectionFilterFactory,
                                                             HttpExecutionStrategyInfluencer {

    private Single<StreamingHttpResponse> request(final StreamingHttpRequester delegate,
                                                  final HttpExecutionStrategy strategy,
                                                  final StreamingHttpRequest request,
                                                  final boolean onlyRelative) {
        final Single<StreamingHttpResponse> response = delegate.request(strategy, request);
        if (maxRedirects <= 0) {
            return response;
        }
        return new RedirectSingle(strategy, response, request, maxRedirects, delegate, onlyRelative);
    }

    public  RedirectingHttpRequesterFilter();
    public  RedirectingHttpRequesterFilter(final int maxRedirects);
    public  RedirectingHttpRequesterFilter(final boolean onlyRelativeClient);
    public  RedirectingHttpRequesterFilter(final boolean onlyRelativeClient,
                                          final int maxRedirects);
    public  RedirectingHttpRequesterFilter(final boolean onlyRelativeClient,
                                          final boolean onlyRelativeConnection);
    public  RedirectingHttpRequesterFilter(final boolean onlyRelativeClient,
                                          final boolean onlyRelativeConnection,
                                          final int maxRedirects);

}