package com.alorma.github.sdk.security; import com.alorma.gitskarios.core.client.BaseListClient; import com.alorma.gitskarios.core.client.PaginationLink; import com.alorma.gitskarios.core.client.RelType; import com.squareup.okhttp.OkHttpClient; import java.io.IOException; import retrofit.client.Header; import retrofit.client.OkClient; import retrofit.client.Request; import retrofit.client.Response; public class InterceptingListOkClient extends OkClient { private BaseListClient baseClient; public InterceptingListOkClient(OkHttpClient client, BaseListClient baseClient) { super(client); this.baseClient = baseClient; } @Override public Response execute(Request request) throws IOException { Response response = super.execute(request); try { for (Header header : response.getHeaders()) { if (header.getName().equals("Link")) { String[] parts = header.getValue().split(","); for (String part : parts) { PaginationLink bottomPaginationLink = new PaginationLink(part); if (bottomPaginationLink.rel == RelType.last) { baseClient.last = bottomPaginationLink.uri; baseClient.lastPage = bottomPaginationLink.page; } else if (bottomPaginationLink.rel == RelType.next) { baseClient.next = bottomPaginationLink.uri; baseClient.nextPage = bottomPaginationLink.page; } } } } } catch (Exception e) { e.printStackTrace(); } return response; } }