Skip to content

Commit 654cfcf

Browse files
authored
Merge pull request #787 from PierreBtz/pbeitz/search-with-export
Add support for the export API to search tickets
2 parents 47b3ee2 + 74a0de7 commit 654cfcf

2 files changed

Lines changed: 48 additions & 1 deletion

File tree

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

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,18 @@ public Iterable<Ticket> getTicketsFromSearch(String searchTerm) {
558558
handleList(Ticket.class, "results"));
559559
}
560560

561+
public Iterable<Ticket> getTicketFromSearchWithExport(String searchTerm) {
562+
return getTicketFromSearchWithExport(searchTerm, cbpPageSize);
563+
}
564+
565+
public Iterable<Ticket> getTicketFromSearchWithExport(String searchTerm, int pageSize) {
566+
return new PagedIterable<>(
567+
tmpl(cbp("/search/export", true, pageSize).toString()
568+
+ "&filter[type]=ticket&query={query}")
569+
.set("query", searchTerm + " type:ticket"),
570+
handleList(Ticket.class, "results"));
571+
}
572+
561573
public Iterable<Article> getArticleFromSearch(String searchTerm) {
562574
return new PagedIterable<>(
563575
tmpl("/help_center/articles/search.json{?query}").set("query", searchTerm),
@@ -3862,11 +3874,16 @@ private TemplateUri tmpl(String template) {
38623874
}
38633875

38643876
private TemplateUri cbp(String path) {
3877+
return cbp(path, false, cbpPageSize);
3878+
}
3879+
3880+
private TemplateUri cbp(String path, boolean noDomain, int pageSize) {
38653881
Objects.requireNonNull(path, "Path cannot be null");
38663882
if (path.indexOf('?') != -1) {
38673883
throw new IllegalArgumentException("Path cannot contain a query string");
38683884
}
3869-
return new TemplateUri(url + path + "?page[size]={pageSize}").set("pageSize", cbpPageSize);
3885+
return new TemplateUri((noDomain ? "" : url) + path + "?page[size]={pageSize}")
3886+
.set("pageSize", pageSize);
38703887
}
38713888

38723889
private Uri cnst(String template) {

src/test/java/org/zendesk/client/v2/RealSmokeTest.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2798,6 +2798,36 @@ public void getTicketsFromSearch() throws Exception {
27982798
}
27992799
}
28002800

2801+
@Test
2802+
public void getTicketFromSearchWithExport() throws Exception {
2803+
createClientWithTokenOrPassword();
2804+
2805+
Ticket t = newTestTicket();
2806+
t.setRequester(new Ticket.Requester("a name", "email+alias@acme.org"));
2807+
Ticket ticket = null;
2808+
try {
2809+
ticket = instance.createTicket(t);
2810+
// according to the doc, it takes about 1 minute for the ticket to be indexed
2811+
// running several time, it seems that the actual value is around 30-40s
2812+
Awaitility.with()
2813+
.pollDelay(20, SECONDS)
2814+
.and()
2815+
.pollInterval(10, SECONDS)
2816+
.await()
2817+
.timeout(90, SECONDS)
2818+
.until(
2819+
() -> {
2820+
Iterable<Ticket> tickets =
2821+
instance.getTicketFromSearchWithExport("requester:email+alias@acme.org");
2822+
return StreamSupport.stream(tickets.spliterator(), false).findAny().isPresent();
2823+
});
2824+
} finally {
2825+
if (ticket != null) {
2826+
instance.deleteTicket(ticket.getId());
2827+
}
2828+
}
2829+
}
2830+
28012831
@Test
28022832
public void getUnresolvedViewReturnsANewlyCreatedTicket() throws Exception {
28032833
createClientWithTokenOrPassword();

0 commit comments

Comments
 (0)