Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion src/main/java/org/zendesk/client/v2/Zendesk.java
Original file line number Diff line number Diff line change
Expand Up @@ -558,6 +558,13 @@ public Iterable<Ticket> getTicketsFromSearch(String searchTerm) {
handleList(Ticket.class, "results"));
}

public Iterable<Ticket> getTicketFromSearchWithExport(String searchTerm) {
return new PagedIterable<>(
tmpl(cbp("/search/export", true).toString() + "&filter[type]=ticket&query={query}")
.set("query", searchTerm + " type:ticket"),
handleList(Ticket.class, "results"));
}

public Iterable<Article> getArticleFromSearch(String searchTerm) {
return new PagedIterable<>(
tmpl("/help_center/articles/search.json{?query}").set("query", searchTerm),
Expand Down Expand Up @@ -3862,11 +3869,16 @@ private TemplateUri tmpl(String template) {
}

private TemplateUri cbp(String path) {
return cbp(path, false);
}

private TemplateUri cbp(String path, boolean noDomain) {
Objects.requireNonNull(path, "Path cannot be null");
if (path.indexOf('?') != -1) {
throw new IllegalArgumentException("Path cannot contain a query string");
}
return new TemplateUri(url + path + "?page[size]={pageSize}").set("pageSize", cbpPageSize);
return new TemplateUri((noDomain ? "" : url) + path + "?page[size]={pageSize}")
.set("pageSize", cbpPageSize);
}

private Uri cnst(String template) {
Expand Down
30 changes: 30 additions & 0 deletions src/test/java/org/zendesk/client/v2/RealSmokeTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -2798,6 +2798,36 @@ public void getTicketsFromSearch() throws Exception {
}
}

@Test
public void getTicketFromSearchWithExport() throws Exception {
createClientWithTokenOrPassword();

Ticket t = newTestTicket();
t.setRequester(new Ticket.Requester("a name", "email+alias@acme.org"));
Ticket ticket = null;
try {
ticket = instance.createTicket(t);
// according to the doc, it takes about 1 minute for the ticket to be indexed
// running several time, it seems that the actual value is around 30-40s
Awaitility.with()
.pollDelay(20, SECONDS)
.and()
.pollInterval(10, SECONDS)
.await()
.timeout(90, SECONDS)
.until(
() -> {
Iterable<Ticket> tickets =
instance.getTicketFromSearchWithExport("requester:email+alias@acme.org");
return StreamSupport.stream(tickets.spliterator(), false).findAny().isPresent();
});
} finally {
if (ticket != null) {
instance.deleteTicket(ticket.getId());
}
}
}

@Test
public void getUnresolvedViewReturnsANewlyCreatedTicket() throws Exception {
createClientWithTokenOrPassword();
Expand Down
Loading