diff --git a/src/main/java/com/afrozaar/wordpress/wpapi/v2/Strings.java b/src/main/java/com/afrozaar/wordpress/wpapi/v2/Strings.java index 1431e5b..7ac139e 100644 --- a/src/main/java/com/afrozaar/wordpress/wpapi/v2/Strings.java +++ b/src/main/java/com/afrozaar/wordpress/wpapi/v2/Strings.java @@ -3,6 +3,7 @@ public interface Strings { String HEADER_TOTAL_PAGES = "X-WP-TotalPages"; String HEADER_LINK = "Link"; + String HEADER_TOTAL = "x-wp-total"; String NEXT = "next"; String PREV = "prev"; } \ No newline at end of file diff --git a/src/main/java/com/afrozaar/wordpress/wpapi/v2/response/PagedResponse.java b/src/main/java/com/afrozaar/wordpress/wpapi/v2/response/PagedResponse.java index dea3dcf..6884e0c 100644 --- a/src/main/java/com/afrozaar/wordpress/wpapi/v2/response/PagedResponse.java +++ b/src/main/java/com/afrozaar/wordpress/wpapi/v2/response/PagedResponse.java @@ -30,14 +30,24 @@ public class PagedResponse { final String previous; final int pages; final List list; + final int total; - public PagedResponse(Class clazz, String self, String next, String previous, int pages, List list) { + public int getPages() { + return pages; + } + + public int getTotal() { + return total; + } + + public PagedResponse(Class clazz, String self, String next, String previous, int pages, List list, int total) { this.clazz = clazz; this.self = self; this.next = next; this.previous = previous; this.pages = pages; this.list = list; + this.total = total; } public boolean hasNext() { @@ -88,6 +98,7 @@ public static class Builder { private List posts; private int pages; private Class t1; + private int total; private Builder(Class t1) { this.t1 = t1; @@ -118,7 +129,7 @@ public Builder withPosts(List posts) { } public PagedResponse build() { - return new PagedResponse<>(t1, self, next, previous, pages, posts); + return new PagedResponse<>(t1, self, next, previous, pages, posts, total); } public Builder withPages(int pages) { @@ -126,11 +137,22 @@ public Builder withPages(int pages) { return this; } + public Builder withPages(int pages, int total) { + this.pages = pages; + this.total = total; + return this; + } + public Builder withPages(HttpHeaders headers) { Optional totalPages = headers.keySet().stream().filter(x -> Strings.HEADER_TOTAL_PAGES.compareToIgnoreCase(x) == 0).findFirst(); - LOG.debug("found pages {} from headers {}", totalPages, headers); + Optional totalOptional = headers.keySet().stream().filter(x -> Strings.HEADER_TOTAL.compareToIgnoreCase(x) == 0).findFirst(); + LOG.debug("found pages {}, total {} from headers {}", totalPages, totalOptional, headers); Stream totalPageHeader = totalPages.map(x -> headers.get(x)).map(x -> x.stream()).orElse(Stream.empty()); - totalPageHeader.findFirst().ifPresent(pages -> Builder.this.withPages(Integer.valueOf(pages))); + int page = Integer.valueOf(totalPageHeader.findFirst().get()); + + Stream totalHeader = totalOptional.map(x -> headers.get(x)).map(x -> x.stream()).orElse(Stream.empty()); + totalHeader.findFirst().ifPresent(total -> Builder.this.withPages(page, Integer.valueOf(total))); + return this; }