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 java.net.URI;
22
23 import org.eclipse.jetty.client.api.Request;
24 import org.eclipse.jetty.client.api.Response;
25 import org.eclipse.jetty.http.HttpHeader;
26 import org.eclipse.jetty.http.HttpStatus;
27
28
29
30
31
32
33
34 public class ProxyAuthenticationProtocolHandler extends AuthenticationProtocolHandler
35 {
36 public static final String NAME = "proxy-authenticate";
37 private static final String ATTRIBUTE = ProxyAuthenticationProtocolHandler.class.getName() + ".attribute";
38
39 public ProxyAuthenticationProtocolHandler(HttpClient client)
40 {
41 this(client, DEFAULT_MAX_CONTENT_LENGTH);
42 }
43
44 public ProxyAuthenticationProtocolHandler(HttpClient client, int maxContentLength)
45 {
46 super(client, maxContentLength);
47 }
48
49 @Override
50 public String getName()
51 {
52 return NAME;
53 }
54
55 @Override
56 public boolean accept(Request request, Response response)
57 {
58 return response.getStatus() == HttpStatus.PROXY_AUTHENTICATION_REQUIRED_407;
59 }
60
61 @Override
62 protected HttpHeader getAuthenticateHeader()
63 {
64 return HttpHeader.PROXY_AUTHENTICATE;
65 }
66
67 @Override
68 protected HttpHeader getAuthorizationHeader()
69 {
70 return HttpHeader.PROXY_AUTHORIZATION;
71 }
72
73 @Override
74 protected URI getAuthenticationURI(Request request)
75 {
76 HttpDestination destination = getHttpClient().destinationFor(request.getScheme(), request.getHost(), request.getPort());
77 ProxyConfiguration.Proxy proxy = destination.getProxy();
78 return proxy != null ? proxy.getURI() : request.getURI();
79 }
80
81 @Override
82 protected String getAuthenticationAttribute()
83 {
84 return ATTRIBUTE;
85 }
86 }