View Javadoc
1   package com.atlassian.sal.core.net;
2   
3   import com.atlassian.sal.api.net.ResponseException;
4   import com.atlassian.sal.api.net.ResponseHandler;
5   import com.atlassian.sal.api.net.ReturningResponseHandler;
6   import com.atlassian.sal.api.net.TrustedRequest;
7   import com.atlassian.sal.api.user.UserManager;
8   import com.atlassian.sal.core.net.auth.TrustedTokenScheme;
9   import com.atlassian.sal.core.trusted.CertificateFactory;
10  import org.apache.http.HttpHost;
11  import org.apache.http.auth.AuthScope;
12  import org.apache.http.auth.UsernamePasswordCredentials;
13  import org.apache.http.client.protocol.HttpClientContext;
14  import org.apache.http.impl.client.CloseableHttpClient;
15  
16  /**
17   * HttpClient implementation of Request interface
18   */
19  public class HttpClientTrustedRequest extends HttpClientRequest implements TrustedRequest {
20  
21      private final UserManager userManager;
22      private final CertificateFactory certificateFactory;
23  
24      public HttpClientTrustedRequest(final UserManager userManager, final CertificateFactory certificateFactory,
25                                      final CloseableHttpClient httpClient, final HttpClientContext httpClientContext,
26                                      final MethodType initialMethodType, final String initialUrl) {
27          super(httpClient, httpClientContext, initialMethodType, initialUrl);
28          this.userManager = userManager;
29          this.certificateFactory = certificateFactory;
30      }
31  
32      public HttpClientTrustedRequest addTrustedTokenAuthentication(final String hostname) {
33          return addTrustedTokenAuthentication(hostname, userManager.getRemoteUsername());
34      }
35  
36      public HttpClientTrustedRequest addTrustedTokenAuthentication(final String hostname, final String username) {
37          httpClientContext.getCredentialsProvider().setCredentials(
38                  new AuthScope(hostname, AuthScope.ANY_PORT),
39                  new UsernamePasswordCredentials(username, null));
40  
41          httpClientContext.getAuthCache().put(new HttpHost(hostname),
42                  new TrustedTokenScheme(certificateFactory.createCertificate(username, this.requestBuilder.getUri().toString())));
43          return this;
44      }
45  
46      @Override
47      public void execute(final ResponseHandler responseHandler) throws ResponseException {
48          super.execute(responseHandler);
49      }
50  
51      @Override
52      public Object executeAndReturn(final ReturningResponseHandler responseHandler) throws ResponseException {
53          return super.executeAndReturn(responseHandler);
54      }
55  }