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