package com.fastaccess.data.service; import android.support.annotation.NonNull; import com.fastaccess.data.dao.BranchesModel; import com.fastaccess.data.dao.CommentRequestModel; import com.fastaccess.data.dao.CreateMilestoneModel; import com.fastaccess.data.dao.LabelModel; import com.fastaccess.data.dao.MarkdownModel; import com.fastaccess.data.dao.MilestoneModel; import com.fastaccess.data.dao.Pageable; import com.fastaccess.data.dao.RepoSubscriptionModel; import com.fastaccess.data.dao.TreeResponseModel; import com.fastaccess.data.dao.model.Comment; import com.fastaccess.data.dao.model.Commit; import com.fastaccess.data.dao.model.Release; import com.fastaccess.data.dao.model.Repo; import com.fastaccess.data.dao.model.RepoFile; import com.fastaccess.data.dao.model.User; import retrofit2.Response; import retrofit2.http.Body; import retrofit2.http.DELETE; import retrofit2.http.GET; import retrofit2.http.Headers; import retrofit2.http.PATCH; import retrofit2.http.POST; import retrofit2.http.PUT; import retrofit2.http.Path; import retrofit2.http.Query; import retrofit2.http.Url; import rx.Observable; /** * Created by Kosh on 10 Dec 2016, 3:16 PM */ public interface RepoService { @NonNull @GET @Headers("Accept: application/vnd.github.VERSION.raw") Observable<String> getFileAsStream(@Url String url); @NonNull @GET @Headers("Accept: application/vnd.github.html") Observable<String> getFileAsHtmlStream(@Url String url); @NonNull @POST("markdown") Observable<String> convertReadmeToHtml(@Body MarkdownModel model); @NonNull @GET("repos/{login}/{repoId}") @Headers({"Accept: application/vnd.github.drax-preview+json, application/vnd.github.mercy-preview+json"}) Observable<Repo> getRepo(@Path("login") String login, @Path("repoId") String repoId); @NonNull @DELETE("repos/{login}/{repoId}") Observable<Response<Boolean>> deleteRepo(@Path("login") String login, @Path("repoId") String repoId); @NonNull @GET @Headers("Accept: application/vnd.github.html") Observable<String> getReadmeHtml(@NonNull @Url String url); @NonNull @GET("user/starred/{owner}/{repo}") Observable<Response<Boolean>> checkStarring(@NonNull @Path("owner") String login, @NonNull @Path("repo") String repoId); @NonNull @PUT("user/starred/{owner}/{repo}") Observable<Response<Boolean>> starRepo(@NonNull @Path("owner") String login, @NonNull @Path("repo") String repoId); @NonNull @DELETE("user/starred/{owner}/{repo}") Observable<Response<Boolean>> unstarRepo(@NonNull @Path("owner") String login, @NonNull @Path("repo") String repoId); @NonNull @POST("/repos/{owner}/{repo}/forks") Observable<Repo> forkRepo(@NonNull @Path("owner") String login, @NonNull @Path("repo") String repoId); @NonNull @GET("repos/{owner}/{repo}/subscription") Observable<RepoSubscriptionModel> isWatchingRepo(@Path("owner") String owner, @Path("repo") String repo); @NonNull @PUT("user/subscriptions/{owner}/{repo}") Observable<Response<Boolean>> watchRepo(@Path("owner") String owner, @Path("repo") String repo); @NonNull @DELETE("user/subscriptions/{owner}/{repo}") Observable<Response<Boolean>> unwatchRepo(@Path("owner") String owner, @Path("repo") String repo); @NonNull @GET("repos/{owner}/{repo}/commits") Observable<Pageable<Commit>> getCommits(@Path("owner") String owner, @Path("repo") String repo, @NonNull @Query("sha") String branch, @Query("page") int page); @NonNull @GET("repos/{owner}/{repo}/releases") @Headers("Accept: application/vnd.github.VERSION.full+json") Observable<Pageable<Release>> getReleases(@Path("owner") String owner, @Path("repo") String repo, @Query("page") int page); @NonNull @GET("repos/{owner}/{repo}/tags") @Headers("Accept: application/vnd.github.VERSION.full+json") Observable<Pageable<Release>> getTagReleases(@Path("owner") String owner, @Path("repo") String repo, @Query("page") int page); @NonNull @GET("repos/{owner}/{repo}/contributors") Observable<Pageable<User>> getContributors(@Path("owner") String owner, @Path("repo") String repo, @Query("page") int page); @NonNull @GET("repos/{owner}/{repo}/commits/{sha}") @Headers("Accept: application/vnd.github.VERSION.full+json, application/vnd.github.squirrel-girl-preview") Observable<Commit> getCommit(@Path("owner") String owner, @Path("repo") String repo, @Path("sha") String sha); @NonNull @GET("repos/{owner}/{repo}/commits/{sha}/comments") @Headers("Accept: application/vnd.github.VERSION.full+json, application/vnd.github.squirrel-girl-preview") Observable<Pageable<Comment>> getCommitComments(@NonNull @Path("owner") String owner, @NonNull @Path("repo") String repo, @NonNull @Path("sha") String ref, @Query("page") int page); @NonNull @POST("repos/{owner}/{repo}/commits/{sha}/comments") @Headers("Accept: application/vnd.github.VERSION.full+json, application/vnd.github.squirrel-girl-preview") Observable<Comment> postCommitComment(@NonNull @Path("owner") String owner, @NonNull @Path("repo") String repo, @NonNull @Path("sha") String ref, @Body CommentRequestModel model); @NonNull @PATCH("repos/{owner}/{repo}/comments/{id}") @Headers("Accept: application/vnd.github.VERSION.full+json, application/vnd.github.squirrel-girl-preview") Observable<Comment> editCommitComment(@Path("owner") String owner, @Path("repo") String repo, @Path("id") long id, @Body CommentRequestModel body); @NonNull @DELETE("repos/{owner}/{repo}/comments/{id}") Observable<Response<Boolean>> deleteComment(@Path("owner") String owner, @Path("repo") String repo, @Path("id") long id); @NonNull @GET("repos/{owner}/{repo}/contents/{path}") Observable<Pageable<RepoFile>> getRepoFiles(@NonNull @Path("owner") String owner, @NonNull @Path("repo") String repo, @NonNull @Path(value = "path", encoded = true) String path, @NonNull @Query("ref") String ref); @NonNull @GET("repos/{owner}/{repo}/git/trees/{sha}?recursive=1") Observable<TreeResponseModel> getRepoTree(@NonNull @Path("owner") String owner, @NonNull @Path("repo") String repo, @NonNull @Path("sha") String sha); @NonNull @GET("repos/{owner}/{repo}/labels") Observable<Pageable<LabelModel>> getLabels(@NonNull @Path("owner") String owner, @NonNull @Path("repo") String repo); @NonNull @POST("repos/{owner}/{repo}/labels") Observable<LabelModel> addLabel(@NonNull @Path("owner") String owner, @NonNull @Path("repo") String repo, @Body LabelModel body); @NonNull @GET("repos/{owner}/{repo}/collaborators/{username}") Observable<Response<Boolean>> isCollaborator(@NonNull @Path("owner") String owner, @NonNull @Path("repo") String repo, @NonNull @Path("username") String username); @NonNull @GET("repos/{owner}/{repo}/collaborators?per_page=100") Observable<Pageable<User>> getCollaborator(@NonNull @Path("owner") String owner, @NonNull @Path("repo") String repo); @NonNull @GET("repos/{owner}/{repo}/branches") Observable<Pageable<BranchesModel>> getBranches(@NonNull @Path("owner") String owner, @NonNull @Path("repo") String repo); @NonNull @GET("repos/{owner}/{repo}/tags") Observable<Pageable<BranchesModel>> getTags(@NonNull @Path("owner") String owner, @NonNull @Path("repo") String repo); @NonNull @GET("repos/{owner}/{repo}/milestones") Observable<Pageable<MilestoneModel>> getMilestones(@Path("owner") String owner, @Path("repo") String repo); @NonNull @POST("repos/{owner}/{repo}/milestones") Observable<MilestoneModel> createMilestone(@Path("owner") String owner, @Path("repo") String repo, @Body CreateMilestoneModel create); @NonNull @GET("repos/{owner}/{repo}/assignees") Observable<Pageable<User>> getAssignees(@Path("owner") String owner, @Path("repo") String repo); @NonNull @GET("repos/{owner}/{repo}/commits?per_page=1") Observable<Pageable<Commit>> getCommitCounts(@Path("owner") String owner, @Path("repo") String repo, @Query("sha") String ref); @NonNull @GET("/repos/{owner}/{repo}/stargazers") Observable<Pageable<User>> getStargazers(@Path("owner") String owner, @Path("repo") String repo, @Query("page") int page); @NonNull @GET("/repos/{owner}/{repo}/subscribers") Observable<Pageable<User>> getWatchers(@Path("owner") String owner, @Path("repo") String repo, @Query("page") int page); @NonNull @GET("/repos/{owner}/{repo}/forks") Observable<Pageable<Repo>> getForks(@Path("owner") String owner, @Path("repo") String repo, @Query("page") int page); }