package com.alorma.github.sdk.services.commit;
import com.alorma.github.sdk.bean.dto.request.CommitCommentRequest;
import com.alorma.github.sdk.bean.dto.response.CommitComment;
import core.repositories.Commit;
import java.util.List;
import retrofit.Callback;
import retrofit.http.Body;
import retrofit.http.GET;
import retrofit.http.POST;
import retrofit.http.Path;
import retrofit.http.Query;
import rx.Observable;
public interface CommitsService {
//Async
@GET("/repos/{owner}/{name}/commits/{sha}/comments")
void singleCommitComments(@Path("owner") String owner, @Path("name") String repo,
@Path("sha") String sha, Callback<List<CommitComment>> callback);
@GET("/repos/{owner}/{name}/commits/{sha}/comments")
void singleCommitComments(@Path("owner") String owner, @Path("name") String repo,
@Path("sha") String sha, @Query("page") int page, Callback<List<CommitComment>> callback);
@GET("/repos/{owner}/{name}/commits")
void commits(@Path("owner") String owner, @Path("name") String repo,
Callback<List<Commit>> callback);
@GET("/repos/{owner}/{name}/commits")
void commits(@Path("owner") String owner, @Path("name") String repo, @Query("page") int page,
Callback<List<Commit>> callback);
@GET("/repos/{owner}/{name}/commits")
void commits(@Path("owner") String owner, @Path("name") String repo, @Query("sha") String sha,
Callback<List<Commit>> callback);
@GET("/repos/{owner}/{name}/commits")
void commits(@Path("owner") String owner, @Path("name") String repo, @Query("page") int page,
@Query("sha") String sha, Callback<List<Commit>> callback);
@GET("/repos/{owner}/{name}/commits")
void commitsByPath(@Path("owner") String owner, @Path("name") String repo,
@Query("path") String path, Callback<List<Commit>> callback);
@GET("/repos/{owner}/{name}/commits")
void commitsByPath(@Path("owner") String owner, @Path("name") String repo,
@Query("path") String path, @Query("page") int page, Callback<List<Commit>> callback);
@GET("/repos/{owner}/{name}/commits")
void commitsByPath(@Path("owner") String owner, @Path("name") String repo,
@Query("path") String path, @Query("sha") String sha, Callback<List<Commit>> callback);
@GET("/repos/{owner}/{name}/commits")
void commitsByPath(@Path("owner") String owner, @Path("name") String repo,
@Query("path") String path, @Query("sha") String sha, @Query("page") int page,
Callback<List<Commit>> callback);
//Sync
@GET("/repos/{owner}/{name}/commits/{sha}")
Observable<Commit> singleCommit(@Path("owner") String owner, @Path("name") String repo,
@Path("sha") String sha);
@POST("/repos/{owner}/{name}/commits/{sha}/comments")
Observable<CommitComment> publishComment(@Path("owner") String owner, @Path("name") String repo,
@Path("sha") String sha, @Body CommitCommentRequest request);
}