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
26
27
28 public class RedirectProtocolHandler extends Response.Listener.Adapter implements ProtocolHandler
29 {
30 public static final String NAME = "redirect";
31
32 private final HttpRedirector redirector;
33
34 public RedirectProtocolHandler(HttpClient client)
35 {
36 redirector = new HttpRedirector(client);
37 }
38
39 @Override
40 public String getName()
41 {
42 return NAME;
43 }
44
45 @Override
46 public boolean accept(Request request, Response response)
47 {
48 return redirector.isRedirect(response) && request.isFollowRedirects();
49 }
50
51 @Override
52 public Response.Listener getResponseListener()
53 {
54 return this;
55 }
56
57 @Override
58 public void onComplete(Result result)
59 {
60 Request request = result.getRequest();
61 Response response = result.getResponse();
62 if (result.isSucceeded())
63 redirector.redirect(request, response, null);
64 else
65 redirector.fail(request, response, result.getFailure());
66 }
67 }