package com.alorma.github.sdk.services.repo; import com.alorma.github.sdk.bean.dto.request.RepoRequestDTO; import com.alorma.github.sdk.bean.dto.response.CompareCommit; import com.alorma.github.sdk.bean.dto.response.Content; import com.alorma.github.sdk.bean.dto.response.Contributor; import com.alorma.github.sdk.bean.dto.response.GithubEvent; import com.alorma.github.sdk.bean.dto.response.GithubStatusResponse; import core.User; import core.repositories.Branch; import core.repositories.Repo; import core.repositories.releases.Release; import java.util.List; import java.util.Map; import retrofit.Callback; import retrofit.client.Response; import retrofit.http.Body; import retrofit.http.DELETE; import retrofit.http.GET; import retrofit.http.PATCH; import retrofit.http.POST; import retrofit.http.Path; import retrofit.http.Query; import rx.Observable; public interface RepoService { @GET("/repos/{owner}/{name}/contents") void contents(@Path("owner") String owner, @Path("name") String repo, Callback<List<Content>> callback); @GET("/repos/{owner}/{name}/contents") void contentsByRef(@Path("owner") String owner, @Path("name") String repo, @Query("ref") String ref, Callback<List<Content>> callback); @GET("/repos/{owner}/{name}/contents/{path}") void contents(@Path("owner") String owner, @Path("name") String repo, @Path("path") String path, Callback<List<Content>> callback); @GET("/repos/{owner}/{name}/contents/{path}") void contentsByRef(@Path("owner") String owner, @Path("name") String repo, @Path("path") String path, @Query("ref") String ref, Callback<List<Content>> callback); @GET("/repos/{owner}/{name}/stats/contributors") void contributors(@Path("owner") String owner, @Path("name") String repo, Callback<List<Contributor>> callback); @GET("/repos/{owner}/{name}/stats/contributors") void contributors(@Path("owner") String owner, @Path("name") String repo, @Query("page") int page, Callback<List<Contributor>> callback); @GET("/repos/{owner}/{name}/collaborators") void collaborators(@Path("owner") String owner, @Path("name") String repo, Callback<List<User>> callback); @GET("/repos/{owner}/{name}/collaborators") void collaborators(@Path("owner") String owner, @Path("name") String repo, @Query("page") int page, Callback<List<User>> callback); @GET("/repos/{owner}/{name}/releases") void releases(@Path("owner") String owner, @Path("name") String repo, Callback<List<Release>> callback); @GET("/repos/{owner}/{name}/releases") void releases(@Path("owner") String owner, @Path("name") String repo, @Query("page") int page, Callback<List<Release>> callback); @GET("/repos/{owner}/{name}/events") void events(@Path("owner") String owner, @Path("name") String repo, Callback<List<GithubEvent>> eventsCallback); @GET("/repos/{owner}/{name}/events") void events(@Path("owner") String owner, @Path("name") String repo, @Query("page") int page, Callback<List<GithubEvent>> eventsCallback); @GET("/repos/{owner}/{name}/forks") void listForks(@Path("owner") String owner, @Path("name") String repo, @Query("sort") String sort, Callback<List<Repo>> callback); @GET("/repos/{owner}/{name}/forks") void listForks(@Path("owner") String owner, @Path("name") String repo, @Query("sort") String sort, @Query("page") int page, Callback<List<Repo>> callback); @GET("/repos/{owner}/{name}/commits/{ref}/status") void combinedStatusASync(@Path("owner") String owner, @Path("name") String repo, @Path("ref") String ref, Callback<GithubStatusResponse> callback); @GET("/repos/{owner}/{name}/commits/{ref}/status") void combinedStatusASync(@Path("owner") String owner, @Path("name") String repo, @Path("ref") String ref, @Query("page") int page, Callback<GithubStatusResponse> callback); @GET("/repos/{owner}/{name}/branches") void branches(@Path("owner") String owner, @Path("name") String repo, Callback<List<Branch>> callback); @GET("/repos/{owner}/{name}/branches") void branches(@Path("owner") String owner, @Path("name") String repo, @Query("page") int page, Callback<List<Branch>> callback); //Sync @GET("/repos/{owner}/{name}") Observable<Repo> get(@Path("owner") String owner, @Path("name") String repo); @GET("/repos/{owner}/{name}/contents") List<Content> contents(@Path("owner") String owner, @Path("name") String repo); @GET("/repos/{owner}/{name}/contents") List<Content> contentsByRef(@Path("owner") String owner, @Path("name") String repo, @Query("ref") String ref); @GET("/repos/{owner}/{name}/readme") Observable<Content> readme(@Path("owner") String owner, @Path("name") String repo); @GET("/repos/{owner}/{name}/readme") Observable<Content> readme(@Path("owner") String owner, @Path("name") String repo, @Query("ref") String ref); @GET("/repos/{owner}/{name}/contents/{path}") List<Content> contents(@Path("owner") String owner, @Path("name") String repo, @Path("path") String path); @GET("/repos/{owner}/{name}/contents/{path}") List<Content> contentsByRef(@Path("owner") String owner, @Path("name") String repo, @Path("path") String path, @Query("ref") String ref); @GET("/repos/{owner}/{name}/stats/contributors") List<Contributor> contributors(@Path("owner") String owner, @Path("name") String repo); @GET("/repos/{owner}/{name}/stats/contributors") List<Contributor> contributors(@Path("owner") String owner, @Path("name") String repo, @Query("page") int page); @GET("/repos/{owner}/{name}/collaborators") List<User> collaborators(@Path("owner") String owner, @Path("name") String repo); @GET("/repos/{owner}/{name}/collaborators") List<User> collaborators(@Path("owner") String owner, @Path("name") String repo, @Query("page") int page); @GET("/repos/{owner}/{name}/releases") List<Release> releases(@Path("owner") String owner, @Path("name") String repo); @GET("/repos/{owner}/{name}/releases") List<Release> releases(@Path("owner") String owner, @Path("name") String repo, @Query("page") int page); @GET("/repos/{owner}/{name}/releases/latest") Observable<Release> lastRelease(@Path("owner") String owner, @Path("name") String repo); @GET("/repos/{owner}/{name}/releases/{id}") Observable<Release> release(@Path("owner") String owner, @Path("name") String repo, @Path("id") String id); @GET("/repos/{owner}/{name}/compare/{base}...{head}") Observable<CompareCommit> compareCommits(@Path("owner") String owner, @Path("name") String repo, @Path("base") String base, @Path("head") String head); @DELETE("/repos/{owner}/{name}") Observable<Response> delete(@Path("owner") String owner, @Path("name") String repo); @GET("/repos/{owner}/{name}/languages") Observable<Map<String, Long>> languages(@Path("owner") String owner, @Path("name") String repo); @PATCH("/repos/{owner}/{name}") Observable<Repo> edit(@Path("owner") String owner, @Path("name") String repo, @Body RepoRequestDTO repoRequestDTO); @GET("/repos/{owner}/{name}/events") List<GithubEvent> events(@Path("owner") String owner, @Path("name") String repo); @GET("/repos/{owner}/{name}/events") List<GithubEvent> events(@Path("owner") String owner, @Path("name") String repo, @Query("page") int page); @GET("/repos/{owner}/{name}/forks") List<Repo> listForks(@Path("owner") String owner, @Path("name") String repo, @Query("sort") String sort); @GET("/repos/{owner}/{name}/forks") List<Repo> listForks(@Path("owner") String owner, @Path("name") String repo, @Query("sort") String sort, @Query("page") int page); @GET("/repos/{owner}/{name}/commits/{ref}/status") Observable<GithubStatusResponse> combinedStatus(@Path("owner") String owner, @Path("name") String repo, @Path("ref") String ref); @GET("/repos/{owner}/{name}/commits/{ref}/status") Observable<GithubStatusResponse> combinedStatus(@Path("owner") String owner, @Path("name") String repo, @Path("ref") String ref, @Query("page") int page); @GET("/repos/{owner}/{name}/commits/{ref}/status") GithubStatusResponse combinedStatusSync(@Path("owner") String owner, @Path("name") String repo, @Path("ref") String ref); @GET("/repos/{owner}/{name}/commits/{ref}/status") GithubStatusResponse combinedStatusSync(@Path("owner") String owner, @Path("name") String repo, @Path("ref") String ref, @Query("page") int page); @POST("/user/repos") Observable<Repo> create(@Body RepoRequestDTO repoRequestDTO); //Async @GET("/repos/{owner}/{name}") Observable<Repo> getObs(@Path("owner") String owner, @Path("name") String repo); }