package com.alorma.github.sdk.services.issues.story; import com.alorma.github.sdk.bean.dto.request.IssueRequest; import com.alorma.github.sdk.bean.dto.response.Issue; import com.alorma.github.sdk.bean.issue.IssueEvent; import com.alorma.github.sdk.bean.issue.IssueStory; import core.GithubComment; import core.issues.Label; import java.util.List; import retrofit.Callback; import retrofit.http.Body; import retrofit.http.GET; import retrofit.http.Headers; import retrofit.http.PATCH; import retrofit.http.POST; import retrofit.http.Path; import retrofit.http.Query; import rx.Observable; public interface IssueStoryService { //Async @POST("/repos/{owner}/{name}/issues") void create(@Path("owner") String owner, @Path("name") String repo, @Body IssueRequest issue, Callback<IssueStory> callback); @GET("/repos/{owner}/{name}/issues/{num}") void detail(@Path("owner") String owner, @Path("name") String repo, @Path("num") int num, Callback<Issue> issueCallback); @Headers({"Accept: application/vnd.github.squirrel-girl-preview"}) @GET("/repos/{owner}/{name}/issues/{num}/comments") void comments(@Path("owner") String owner, @Path("name") String repo, @Path("num") int num, Callback<List<GithubComment>> callback); @Headers({"Accept: application/vnd.github.squirrel-girl-preview"}) @GET("/repos/{owner}/{name}/issues/{num}/comments") void comments(@Path("owner") String owner, @Path("name") String repo, @Path("num") int num, @Query("page") int page, Callback<List<GithubComment>> callback); @GET("/repos/{owner}/{name}/issues/{num}/events") void events(@Path("owner") String owner, @Path("name") String repo, @Path("num") int num, Callback<List<IssueEvent>> callback); @GET("/repos/{owner}/{name}/issues/{num}/events") void events(@Path("owner") String owner, @Path("name") String repo, @Path("num") int num, @Query("page") int page, Callback<List<IssueEvent>> callback); @PATCH("/repos/{owner}/{name}/issues/{num}") void closeIssue(@Path("owner") String owner, @Path("name") String repo, @Path("num") int num, @Body IssueRequest issueRequest, Callback<Issue> callback); @POST("/repos/{owner}/{name}/issues/{num}/comments") void addComment(@Path("owner") String owner, @Path("name") String repo, @Path("num") int num, @Body GithubComment comment, Callback<GithubComment> callback); @GET("/repos/{owner}/{name}/issues/{num}/labels") void labels(@Path("owner") String owner, @Path("name") String repo, @Path("num") int num, Callback<List<Label>> issueCallback); @GET("/repos/{owner}/{name}/issues/{num}/labels") void labels(@Path("owner") String owner, @Path("name") String repo, @Path("num") int num, @Query("page") int page, Callback<List<Label>> issueCallback); //Sync @POST("/repos/{owner}/{name}/issues") IssueStory create(@Path("owner") String owner, @Path("name") String repo, @Body IssueRequest issue); @GET("/repos/{owner}/{name}/issues/{num}") Issue detail(@Path("owner") String owner, @Path("name") String repo, @Path("num") int num); @PATCH("/repos/{owner}/{name}/issues/{num}") Issue closeIssue(@Path("owner") String owner, @Path("name") String repo, @Path("num") int num, @Body IssueRequest issueRequest); @POST("/repos/{owner}/{name}/issues/{num}/comments") GithubComment addComment(@Path("owner") String owner, @Path("name") String repo, @Path("num") int num, @Body GithubComment comment); @GET("/repos/{owner}/{name}/issues/{num}/labels") List<Label> labels(@Path("owner") String owner, @Path("name") String repo, @Path("num") int num); @GET("/repos/{owner}/{name}/issues/{num}/labels") List<Label> labels(@Path("owner") String owner, @Path("name") String repo, @Path("num") int num, @Query("page") int page); // Observable @Headers({"Accept: application/vnd.github.squirrel-girl-preview"}) @GET("/repos/{owner}/{name}/issues/{num}") Observable<Issue> detailObs(@Path("owner") String owner, @Path("name") String repo, @Path("num") int num); @GET("/repos/{owner}/{name}/issues/{num}/comments") Observable<List<GithubComment>> commentsObs(@Path("owner") String owner, @Path("name") String repo, @Path("num") int num); @GET("/repos/{owner}/{name}/issues/{num}/comments") Observable<List<GithubComment>> commentsObs(@Path("owner") String owner, @Path("name") String repo, @Path("num") int num , @Query("page") int page); }