Skip to content

Commit d774b63

Browse files
committed
Add support for ticket audits
1 parent 8e5f7c7 commit d774b63

22 files changed

+1108
-10
lines changed

src/main/java/org/zendesk/client/v2/ZenDesk.java

Lines changed: 69 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.ning.http.client.Response;
1717
import org.slf4j.Logger;
1818
import org.slf4j.LoggerFactory;
19+
import org.zendesk.client.v2.model.Audit;
1920
import org.zendesk.client.v2.model.Ticket;
2021

2122
import java.io.Closeable;
@@ -88,7 +89,7 @@ public Ticket getTicket(int id) {
8889
}
8990

9091
public void deleteTicket(Ticket ticket) {
91-
checkTicketId(ticket);
92+
checkHasId(ticket);
9293
deleteTicket(ticket.getId());
9394
}
9495

@@ -103,14 +104,14 @@ JSON, json(Collections.singletonMap("ticket", ticket))),
103104
}
104105

105106
public Ticket updateTicket(Ticket ticket) {
106-
checkTicketId(ticket);
107+
checkHasId(ticket);
107108
return complete(submit(req("PUT", tmpl("/tickets/{id}.json").set("id", ticket.getId()),
108109
JSON, json(Collections.singletonMap("ticket", ticket))),
109110
handle(Ticket.class, "ticket")));
110111
}
111112

112113
public void markTicketAsSpam(Ticket ticket) {
113-
checkTicketId(ticket);
114+
checkHasId(ticket);
114115
markTicketAsSpam(ticket.getId());
115116
}
116117

@@ -152,6 +153,64 @@ public Iterable<Ticket> getUserCCDTickets(int userId) {
152153
handleList(Ticket.class, "tickets"));
153154
}
154155

156+
public Iterable<Audit> getTicketAudits(Ticket ticket) {
157+
checkHasId(ticket);
158+
return getTicketAudits(ticket.getId());
159+
}
160+
161+
public Iterable<Audit> getTicketAudits(Integer id) {
162+
return new PagedIterable<Audit>(tmpl("/tickets/{ticketId}/audits.json").set("ticketId", id),
163+
handleList(Audit.class, "audits"));
164+
}
165+
166+
public Audit getTicketAudit(Ticket ticket, Audit audit) {
167+
checkHasId(audit);
168+
return getTicketAudit(ticket, audit.getId());
169+
}
170+
171+
public Audit getTicketAudit(Ticket ticket, int id) {
172+
checkHasId(ticket);
173+
return getTicketAudit(ticket.getId(), id);
174+
}
175+
176+
public Audit getTicketAudit(int ticketId, int auditId) {
177+
return complete(submit(req("GET",
178+
tmpl("/tickets/{ticketId}/audits/{auditId}.json").set("ticketId", ticketId).set("auditId", auditId)),
179+
handle(Audit.class, "audit")));
180+
}
181+
182+
public void trustTicketAudit(Ticket ticket, Audit audit) {
183+
checkHasId(audit);
184+
trustTicketAudit(ticket, audit.getId());
185+
}
186+
187+
public void trustTicketAudit(Ticket ticket, int id) {
188+
checkHasId(ticket);
189+
trustTicketAudit(ticket.getId(), id);
190+
}
191+
192+
public void trustTicketAudit(int ticketId, int auditId) {
193+
complete(submit(req("PUT", tmpl("/tickets/{ticketId}/audits/{auditId}/trust.json").set("ticketId", ticketId)
194+
.set("auditId", auditId)), handleStatus()));
195+
}
196+
197+
public void makePrivateTicketAudit(Ticket ticket, Audit audit) {
198+
checkHasId(audit);
199+
makePrivateTicketAudit(ticket, audit.getId());
200+
}
201+
202+
public void makePrivateTicketAudit(Ticket ticket, int id) {
203+
checkHasId(ticket);
204+
makePrivateTicketAudit(ticket.getId(), id);
205+
}
206+
207+
public void makePrivateTicketAudit(int ticketId, int auditId) {
208+
complete(submit(req("PUT",
209+
tmpl("/tickets/{ticketId}/audits/{auditId}/make_private.json").set("ticketId", ticketId)
210+
.set("auditId", auditId)), handleStatus()));
211+
}
212+
213+
155214
//////////////////////////////////////////////////////////////////////
156215
// Helper methods
157216
//////////////////////////////////////////////////////////////////////
@@ -310,12 +369,18 @@ private static <T> T complete(ListenableFuture<T> future) {
310369
}
311370
}
312371

313-
private static void checkTicketId(Ticket ticket) {
372+
private static void checkHasId(Ticket ticket) {
314373
if (ticket.getId() == null) {
315374
throw new IllegalArgumentException("Ticket requires id");
316375
}
317376
}
318377

378+
private static void checkHasId(Audit audit) {
379+
if (audit.getId() == null) {
380+
throw new IllegalArgumentException("Audit requires id");
381+
}
382+
}
383+
319384
private static List<Integer> idArray(int id, int... ids) {
320385
List<Integer> result = new ArrayList<Integer>(ids.length + 1);
321386
result.add(id);
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
package org.zendesk.client.v2.model;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import org.zendesk.client.v2.model.events.Event;
5+
6+
import java.util.Date;
7+
import java.util.List;
8+
import java.util.Map;
9+
10+
/**
11+
* @author stephenc
12+
* @since 05/04/2013 10:22
13+
*/
14+
public class Audit {
15+
private Integer id;
16+
private Integer ticketId;
17+
private Map<String, Object> metadata;
18+
private Via via;
19+
private Date createdAt;
20+
private Integer authorId;
21+
private List<Event> events;
22+
23+
@JsonProperty("author_id")
24+
public Integer getAuthorId() {
25+
return authorId;
26+
}
27+
28+
public void setAuthorId(Integer authorId) {
29+
this.authorId = authorId;
30+
}
31+
32+
@JsonProperty("created_at")
33+
public Date getCreatedAt() {
34+
return createdAt;
35+
}
36+
37+
public void setCreatedAt(Date createdAt) {
38+
this.createdAt = createdAt;
39+
}
40+
41+
public List<Event> getEvents() {
42+
return events;
43+
}
44+
45+
public void setEvents(List<Event> events) {
46+
this.events = events;
47+
}
48+
49+
public Integer getId() {
50+
return id;
51+
}
52+
53+
public void setId(Integer id) {
54+
this.id = id;
55+
}
56+
57+
public Map<String, Object> getMetadata() {
58+
return metadata;
59+
}
60+
61+
public void setMetadata(Map<String, Object> metadata) {
62+
this.metadata = metadata;
63+
}
64+
65+
@JsonProperty("ticket_id")
66+
public Integer getTicketId() {
67+
return ticketId;
68+
}
69+
70+
public void setTicketId(Integer ticketId) {
71+
this.ticketId = ticketId;
72+
}
73+
74+
public Via getVia() {
75+
return via;
76+
}
77+
78+
public void setVia(Via via) {
79+
this.via = via;
80+
}
81+
82+
@Override
83+
public String toString() {
84+
final StringBuilder sb = new StringBuilder();
85+
sb.append("Audit");
86+
sb.append("{authorId=").append(authorId);
87+
sb.append(", id=").append(id);
88+
sb.append(", ticketId=").append(ticketId);
89+
sb.append(", metadata=").append(metadata);
90+
sb.append(", via=").append(via);
91+
sb.append(", createdAt=").append(createdAt);
92+
sb.append(", events=").append(events);
93+
sb.append('}');
94+
return sb.toString();
95+
}
96+
97+
}

src/main/java/org/zendesk/client/v2/model/Via.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
import java.util.Map;
44

55
/**
6-
* @author stephenc
7-
* @since 04/04/2013 17:00
8-
*/
6+
* @author stephenc
7+
* @since 04/04/2013 17:00
8+
*/
99
public class Via {
1010
private String channel;
11-
private Map<String,Object> source;
11+
private Map<String, Object> source;
1212

1313
public String getChannel() {
1414
return channel;
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package org.zendesk.client.v2.model.events;
2+
3+
import org.zendesk.client.v2.model.Via;
4+
5+
import java.util.List;
6+
7+
/**
8+
* @author stephenc
9+
* @since 05/04/2013 11:56
10+
*/
11+
public class CcEvent extends Event {
12+
private List<Integer> recipients;
13+
private Via via;
14+
15+
public List<Integer> getRecipients() {
16+
return recipients;
17+
}
18+
19+
public void setRecipients(List<Integer> recipients) {
20+
this.recipients = recipients;
21+
}
22+
23+
public Via getVia() {
24+
return via;
25+
}
26+
27+
public void setVia(Via via) {
28+
this.via = via;
29+
}
30+
31+
@Override
32+
public String toString() {
33+
final StringBuilder sb = new StringBuilder();
34+
sb.append("CcEvent");
35+
sb.append("{recipients=").append(recipients);
36+
sb.append(", via=").append(via);
37+
sb.append('}');
38+
return sb.toString();
39+
}
40+
}
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package org.zendesk.client.v2.model.events;
2+
3+
import com.fasterxml.jackson.annotation.JsonIgnore;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
5+
6+
import java.util.ArrayList;
7+
import java.util.List;
8+
9+
/**
10+
* @author stephenc
11+
* @since 05/04/2013 11:56
12+
*/
13+
public class ChangeEvent extends CreateEvent {
14+
private List<String> previousValue;
15+
16+
@JsonProperty("previous_value")
17+
public Object getPreviousValueObject() {
18+
if (previousValue == null) {
19+
return null;
20+
}
21+
if (previousValue.size() == 1) {
22+
return previousValue.get(0);
23+
}
24+
return previousValue;
25+
}
26+
27+
public void setPreviousValueObject(Object previousValue) {
28+
if (previousValue == null) {
29+
this.previousValue = null;
30+
} else if (previousValue instanceof List) {
31+
this.previousValue = new ArrayList<String>();
32+
for (Object o : (List) previousValue) {
33+
this.previousValue.add(o == null || o instanceof String ? (String) o : o.toString());
34+
}
35+
} else if (previousValue instanceof String[]) {
36+
this.previousValue = new ArrayList<String>();
37+
for (String s : (String[]) previousValue) {
38+
this.previousValue.add(s);
39+
}
40+
} else if (previousValue instanceof Object[]) {
41+
this.previousValue = new ArrayList<String>();
42+
for (Object o : (Object[]) previousValue) {
43+
this.previousValue.add(o == null || o instanceof String ? (String) o : o.toString());
44+
}
45+
} else if (previousValue instanceof String) {
46+
setPreviousValue((String) previousValue);
47+
} else {
48+
setPreviousValue(previousValue.toString());
49+
}
50+
}
51+
52+
@JsonIgnore
53+
public List<String> getPreviousValues() {
54+
return previousValue;
55+
}
56+
57+
public void setPreviousValues(List<String> previousValue) {
58+
this.previousValue = previousValue;
59+
}
60+
61+
@JsonIgnore
62+
public String getPreviousValue() {
63+
return previousValue == null || previousValue.size() != 1 ? null : previousValue.get(0);
64+
}
65+
66+
public void setPreviousValue(String previousValue) {
67+
if (previousValue == null) {
68+
this.previousValue = null;
69+
} else {
70+
this.previousValue = new ArrayList<String>();
71+
this.previousValue.add(previousValue);
72+
}
73+
}
74+
75+
@Override
76+
public String toString() {
77+
final StringBuilder sb = new StringBuilder();
78+
sb.append("ChangeEvent");
79+
sb.append("{previousValue=").append(previousValue);
80+
sb.append('}');
81+
return sb.toString();
82+
}
83+
}

0 commit comments

Comments
 (0)