package com.xiaomai.geek.data.net; import com.xiaomai.geek.data.module.Repo; import com.xiaomai.geek.data.module.User; import com.xiaomai.geek.data.net.response.Content; import com.xiaomai.geek.data.net.response.SearchResultResp; import java.util.ArrayList; import okhttp3.ResponseBody; import retrofit2.Response; import retrofit2.http.DELETE; import retrofit2.http.GET; import retrofit2.http.Headers; import retrofit2.http.PUT; import retrofit2.http.Path; import retrofit2.http.Query; import rx.Observable; /** * Created by XiaoMai on 2017/4/24. */ /** * GitHub 接口的 per_page 默认为30 */ public interface GitHubService { @Headers("Cache-Control: public, max-age=600") @GET("search/repositories") Observable<SearchResultResp> searchRepo(@Query("q") String key, @Query("sort") String sort, @Query("order") String order, @Query("page") int page, @Query("per_page") int pageSize); @Headers("Cache-Control: public, max-age=3600") @GET("users/{user}") Observable<User> getSingleUser(@Path("user") String user); @Headers("Cache-Control: public, max-age=600") @GET("user/repos") Observable<ArrayList<Repo>> getMyRepos(@Query("sort") String sort, @Query("type") String type, @Query("page") int page); @Headers("Cache-Control: public, max-age=600") @GET("users/{name}/repos") Observable<ArrayList<Repo>> getUserRepos(@Path("name") String user, @Query("sort") String sort, @Query("page") int page); @Headers("Cache-Control: public, max-age=600") @GET("user/starred") Observable<ArrayList<Repo>> getMyStarredRepos(@Query("sort") String sort, @Query("page") int page); @Headers("Cache-Control: public, max-age=600") @GET("users/{name}/starred") Observable<ArrayList<Repo>> getUserStarredRepos(@Path("name") String user, @Query("sort") String sort, @Query("page") int page); @Headers("Cache-Control: public, max-age=3600") @GET("users/{user}/following") Observable<ArrayList<User>> getUserFollowing(@Path("user") String user, @Query("page") int page); @Headers("Cache-Control: public, max-age=3600") @GET("user/following") Observable<ArrayList<User>> getMyFollowing(@Query("page") int page); @Headers("Cache-Control: public, max-age=3600") @GET("users/{user}/followers") Observable<ArrayList<User>> getUserFollowers(@Path("user") String user, @Query("page") int page); @Headers("Cache-Control: public, max-age=3600") @GET("user/followers") Observable<ArrayList<User>> getMyFollowers(@Query("page") int page); @Headers("Cache-Control: public, max-age=3600") @GET("repos/{owner}/{name}") Observable<Repo> get(@Path("owner") String owner, @Path("name") String repo); @Headers("Cache-Control: public, max-age=3600") @GET("repos/{owner}/{name}/contributors") Observable<ArrayList<User>> contributors(@Path("owner") String owner, @Path("name") String repo); @Headers("Cache-Control: public, max-age=3600") @GET("repos/{owner}/{name}/readme") Observable<Content> readme(@Path("owner") String owner, @Path("name") String repo); @Headers("Cache-Control: public, max-age=3600") @GET("repos/{owner}/{name}/forks") Observable<ArrayList<Repo>> listForks(@Path("owner") String owner, @Path("name") String repo, @Query("sort") String sort); @GET("user/starred/{owner}/{repo}") Observable<Response<ResponseBody>> checkIfRepoIsStarred(@Path("owner") String owner, @Path("repo") String repo); @Headers("Content-Length: 0") @PUT("user/starred/{owner}/{repo}") Observable<Response<ResponseBody>> starRepo(@Path("owner") String owner, @Path("repo") String repo); @DELETE("user/starred/{owner}/{repo}") Observable<Response<ResponseBody>> unStarRepo(@Path("owner") String owner, @Path("repo") String repo); }