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
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 }