package com.alorma.github.sdk.services.pullrequest;
import com.alorma.github.sdk.bean.dto.request.MergeButtonRequest;
import com.alorma.github.sdk.bean.dto.response.MergeButtonResponse;
import com.alorma.github.sdk.bean.dto.response.PullRequest;
import com.alorma.github.sdk.bean.dto.response.ReviewComment;
import core.repositories.Commit;
import core.repositories.CommitFile;
import java.util.List;
import retrofit.Callback;
import retrofit.http.Body;
import retrofit.http.GET;
import retrofit.http.PUT;
import retrofit.http.Path;
import retrofit.http.Query;
import rx.Observable;
public interface PullRequestsService {
//Async
@GET("/repos/{owner}/{name}/pulls")
void pulls(@Path("owner") String owner, @Path("name") String repo, @Query("state") String state,
Callback<List<PullRequest>> callback);
@GET("/repos/{owner}/{name}/pulls")
void pulls(@Path("owner") String owner, @Path("name") String repo, @Query("state") String state,
@Query("page") int page, Callback<List<PullRequest>> callback);
@GET("/repos/{owner}/{name}/pulls/{number}")
void pull(@Path("owner") String owner, @Path("name") String repo, @Path("number") int number,
Callback<PullRequest> callback);
@GET("/repos/{owner}/{repo}/pulls/{number}/commits")
void commits(@Path("owner") String owner, @Path("repo") String repo, @Path("number") int number,
Callback<List<Commit>> callback);
@GET("/repos/{owner}/{repo}/pulls/{number}/commits")
void commits(@Path("owner") String owner, @Path("repo") String repo, @Path("number") int number,
@Query("page") int page, Callback<List<Commit>> callback);
@GET("/repos/{owner}/{repo}/pulls/{number}/files")
void files(@Path("owner") String owner, @Path("repo") String repo, @Path("number") int number,
Callback<List<CommitFile>> callback);
@GET("/repos/{owner}/{repo}/pulls/{number}/files")
void files(@Path("owner") String owner, @Path("repo") String repo, @Path("number") int number,
@Query("page") int page, Callback<List<CommitFile>> callback);
@PUT("/repos/{owner}/{repo}/pulls/{number}/merge")
void merge(@Path("owner") String owner, @Path("repo") String repo, @Path("number") int number,
@Body MergeButtonRequest mergeButtonRequest, Callback<MergeButtonResponse> callback);
@GET("/repos/{owner}/{repo}/pulls/{number}/comments")
void reviewComments(@Path("owner") String owner, @Path("repo") String repo,
@Path("number") int number, Callback<List<ReviewComment>> callback);
@GET("/repos/{owner}/{repo}/pulls/{number}/comments")
void reviewComments(@Path("owner") String owner, @Path("repo") String repo,
@Path("number") int number, @Query("page") int page, Callback<List<ReviewComment>> callback);
//Sync
@GET("/repos/{owner}/{name}/pulls")
List<PullRequest> pulls(@Path("owner") String owner, @Path("name") String repo,
@Query("state") String state);
@GET("/repos/{owner}/{name}/pulls")
List<PullRequest> pulls(@Path("owner") String owner, @Path("name") String repo,
@Query("state") String state, @Query("page") int page);
@GET("/repos/{owner}/{name}/pulls/{number}")
Observable<PullRequest> pull(@Path("owner") String owner, @Path("name") String repo,
@Path("number") int number);
@GET("/repos/{owner}/{repo}/pulls/{number}/commits")
List<Commit> commits(@Path("owner") String owner, @Path("repo") String repo,
@Path("number") int number);
@GET("/repos/{owner}/{repo}/pulls/{number}/commits")
List<Commit> commits(@Path("owner") String owner, @Path("repo") String repo,
@Path("number") int number, @Query("page") int page);
@GET("/repos/{owner}/{repo}/pulls/{number}/files")
List<CommitFile> files(@Path("owner") String owner, @Path("repo") String repo,
@Path("number") int number);
@GET("/repos/{owner}/{repo}/pulls/{number}/files")
List<CommitFile> files(@Path("owner") String owner, @Path("repo") String repo,
@Path("number") int number, @Query("page") int page);
@PUT("/repos/{owner}/{repo}/pulls/{number}/merge")
Observable<MergeButtonResponse> merge(@Path("owner") String owner, @Path("repo") String repo,
@Path("number") int number, @Body MergeButtonRequest mergeButtonRequest);
@GET("/repos/{owner}/{repo}/pulls/{number}/comments")
List<ReviewComment> reviewComments(@Path("owner") String owner, @Path("repo") String repo,
@Path("number") int number);
@GET("/repos/{owner}/{repo}/pulls/{number}/comments")
List<ReviewComment> reviewComments(@Path("owner") String owner, @Path("repo") String repo,
@Path("number") int number, @Query("page") int page);
}