package com.alorma.github.sdk.services.commit; import com.alorma.github.sdk.bean.info.CommitInfo; import com.alorma.github.sdk.services.client.GithubListClient; import core.repositories.Commit; import java.util.List; import retrofit.RestAdapter; public class ListCommitsClient extends GithubListClient<List<Commit>> { private CommitInfo info; private String path; private int page; public ListCommitsClient(CommitInfo info, int page) { super(); this.info = info; this.page = page; } public ListCommitsClient(CommitInfo info, String path, int page) { super(); this.info = info; this.path = path; this.page = page; } @Override protected ApiSubscriber getApiObservable(RestAdapter restAdapter) { return new ApiSubscriber() { @Override protected void call(RestAdapter restAdapter) { CommitsService commitsService = restAdapter.create(CommitsService.class); if (path == null) { if (info.sha == null) { if (page == 0) { commitsService.commits(info.repoInfo.owner, info.repoInfo.name, this); } else { commitsService.commits(info.repoInfo.owner, info.repoInfo.name, page, this); } } else { if (page == 0) { commitsService.commits(info.repoInfo.owner, info.repoInfo.name, info.sha, this); } else { commitsService.commits(info.repoInfo.owner, info.repoInfo.name, page, info.sha, this); } } } else { if (info.sha == null) { if (page == 0) { commitsService.commitsByPath(info.repoInfo.owner, info.repoInfo.name, path, this); } else { commitsService.commitsByPath(info.repoInfo.owner, info.repoInfo.name, path, page, this); } } else { if (page == 0) { commitsService.commitsByPath(info.repoInfo.owner, info.repoInfo.name, path, info.sha, this); } else { commitsService.commitsByPath(info.repoInfo.owner, info.repoInfo.name, path, info.sha, page, this); } } } } }; } @Override public String getAcceptHeader() { return "application/vnd.github.cryptographer-preview+sha.json"; } }