1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package com.atlassian.jira.rest.client.internal.async;
17
18 import com.atlassian.httpclient.api.HttpClient;
19 import com.atlassian.jira.rest.client.api.MyPermissionsRestClient;
20 import com.atlassian.jira.rest.client.api.domain.Permissions;
21 import com.atlassian.jira.rest.client.api.domain.input.MyPermissionsInput;
22 import com.atlassian.jira.rest.client.internal.json.PermissionsJsonParser;
23 import com.atlassian.util.concurrent.Promise;
24
25 import javax.ws.rs.core.UriBuilder;
26 import java.net.URI;
27
28 public class AsynchronousMyPermissionsRestClient extends AbstractAsynchronousRestClient implements MyPermissionsRestClient {
29 private static final String URI_PREFIX = "mypermissions";
30 private final URI baseUri;
31 private final PermissionsJsonParser permissionsJsonParser = new PermissionsJsonParser();
32
33 protected AsynchronousMyPermissionsRestClient(final URI baseUri, final HttpClient client) {
34 super(client);
35 this.baseUri = baseUri;
36 }
37
38 @Override
39 public Promise<Permissions> getMyPermissions(final MyPermissionsInput permissionInput) {
40 final UriBuilder uriBuilder = UriBuilder.fromUri(baseUri).path(URI_PREFIX);
41 addContextParams(uriBuilder, permissionInput);
42 return getAndParse(uriBuilder.build(), permissionsJsonParser);
43 }
44
45 private UriBuilder addContextParams(UriBuilder uriBuilder, MyPermissionsInput permissionInput) {
46 if (permissionInput != null) {
47 if (permissionInput.getProjectKey() != null) {
48 uriBuilder.queryParam("projectKey", permissionInput.getProjectKey());
49 }
50 if (permissionInput.getProjectId() != null) {
51 uriBuilder.queryParam("projectId", permissionInput.getProjectId());
52 }
53 if (permissionInput.getIssueKey() != null) {
54 uriBuilder.queryParam("issueKey", permissionInput.getIssueKey());
55 }
56 if (permissionInput.getIssueId() != null) {
57 uriBuilder.queryParam("issueId", permissionInput.getIssueId());
58 }
59 }
60 return uriBuilder;
61 }
62 }