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, final CloseableHttpClient httpClient, final HttpClientContext httpClientContext, final MethodType initialMethodType, final String initialUrl) {
25          super(httpClient, httpClientContext, initialMethodType, initialUrl);
26          this.userManager = userManager;
27          this.certificateFactory = certificateFactory;
28      }
29  
30      public HttpClientTrustedRequest addTrustedTokenAuthentication(final String hostname) {
31          return addTrustedTokenAuthentication(hostname, userManager.getRemoteUsername());
32      }
33  
34      public HttpClientTrustedRequest addTrustedTokenAuthentication(final String hostname, final String username) {
35          httpClientContext.getCredentialsProvider().setCredentials(
36                  new AuthScope(hostname, AuthScope.ANY_PORT),
37                  new UsernamePasswordCredentials(username, null));
38  
39          httpClientContext.getAuthCache().put(new HttpHost(hostname),
40                  new TrustedTokenScheme(certificateFactory.createCertificate(username, this.requestBuilder.getUri().toString())));
41          return this;
42      }
43  
44      @Override
45      public void execute(final ResponseHandler responseHandler) throws ResponseException {
46          super.execute(responseHandler);
47      }
48  
49      @Override
50      public Object executeAndReturn(final ReturningResponseHandler responseHandler) throws ResponseException {
51          return super.executeAndReturn(responseHandler);
52      }
53  }