1 package com.atlassian.jira.rest.client.internal.async;
2
3 import com.atlassian.httpclient.api.HttpClient;
4 import com.atlassian.jira.rest.client.api.AuditRestClient;
5 import com.atlassian.jira.rest.client.api.domain.AuditRecordInput;
6 import com.atlassian.jira.rest.client.api.domain.AuditRecordsData;
7 import com.atlassian.jira.rest.client.api.domain.input.AuditRecordSearchInput;
8 import com.atlassian.jira.rest.client.internal.json.AuditRecordsJsonParser;
9 import com.atlassian.jira.rest.client.internal.json.JsonParseUtil;
10 import com.atlassian.jira.rest.client.internal.json.gen.AuditRecordInputJsonGenerator;
11 import com.atlassian.util.concurrent.Promise;
12
13 import javax.annotation.Nonnull;
14 import javax.ws.rs.core.UriBuilder;
15 import java.net.URI;
16
17
18
19
20 public class AsynchronousAuditRestClient extends AbstractAsynchronousRestClient implements AuditRestClient {
21
22 private final URI baseUri;
23 private final AuditRecordsJsonParser auditRecordsParser = new AuditRecordsJsonParser();
24
25 protected AsynchronousAuditRestClient(final HttpClient client, final URI baseUri) {
26 super(client);
27 this.baseUri = baseUri;
28 }
29
30 @Override
31 public Promise<AuditRecordsData> getAuditRecords(final AuditRecordSearchInput input) {
32 return getAndParse(createSearchPathFromInput(
33 input == null ? new AuditRecordSearchInput(null, null, null, null, null) : input), auditRecordsParser);
34 }
35
36 protected UriBuilder createPathBuilder() {
37 final UriBuilder uriBuilder = UriBuilder.fromUri(baseUri);
38 uriBuilder.path("auditing/record");
39 return uriBuilder;
40 }
41
42 @Override
43 public void addAuditRecord(@Nonnull final AuditRecordInput record) {
44 post(createPathBuilder().build(), record, new AuditRecordInputJsonGenerator()).claim();
45 }
46
47 private URI createSearchPathFromInput(final AuditRecordSearchInput input) {
48 final UriBuilder uriBuilder = createPathBuilder();
49
50 if (input.getOffset() != null) {
51 uriBuilder.queryParam("offset", input.getOffset());
52 }
53
54 if (input.getLimit() != null) {
55 uriBuilder.queryParam(("limit"), input.getLimit());
56 }
57
58 if (input.getTextFilter() != null) {
59 uriBuilder.queryParam(("filter"), input.getTextFilter());
60 }
61
62 if (input.getFrom() != null) {
63 final String fromIsoString = JsonParseUtil.JIRA_DATE_TIME_FORMATTER.print(input.getFrom());
64 uriBuilder.queryParam(("from"), fromIsoString);
65 }
66
67 if (input.getTo() != null) {
68 final String toIsoString = JsonParseUtil.JIRA_DATE_TIME_FORMATTER.print(input.getTo());
69 uriBuilder.queryParam(("to"), toIsoString);
70 }
71
72 try {
73 return uriBuilder.build();
74 } catch (RuntimeException x) {
75 throw x;
76 }
77 }
78 }