1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.client;
20
21 import org.eclipse.jetty.client.api.Request;
22 import org.eclipse.jetty.client.api.Response;
23 import org.eclipse.jetty.client.api.Result;
24
25 public class RedirectProtocolHandler extends Response.Listener.Adapter implements ProtocolHandler
26 {
27 private final HttpRedirector redirector;
28
29 public RedirectProtocolHandler(HttpClient client)
30 {
31 redirector = new HttpRedirector(client);
32 }
33
34 @Override
35 public boolean accept(Request request, Response response)
36 {
37 return redirector.isRedirect(response) && request.isFollowRedirects();
38 }
39
40 @Override
41 public Response.Listener getResponseListener()
42 {
43 return this;
44 }
45
46 @Override
47 public void onComplete(Result result)
48 {
49 Request request = result.getRequest();
50 Response response = result.getResponse();
51 if (result.isSucceeded())
52 redirector.redirect(request, response, null);
53 else
54 redirector.fail(request, response, result.getFailure());
55 }
56 }