package tellh.com.gitclub.model.net.service; import java.util.List; import okhttp3.ResponseBody; import retrofit2.Response; import retrofit2.http.Body; import retrofit2.http.DELETE; import retrofit2.http.GET; import retrofit2.http.POST; import retrofit2.http.PUT; import retrofit2.http.Path; import retrofit2.http.Query; import rx.Observable; import tellh.com.gitclub.model.entity.Authorization; import tellh.com.gitclub.model.entity.CreateAuthorization; import tellh.com.gitclub.model.entity.Event; import tellh.com.gitclub.model.entity.RepositoryInfo; import tellh.com.gitclub.model.entity.SearchResult; import tellh.com.gitclub.model.entity.UserEntity; import tellh.com.gitclub.model.entity.UserInfo; /** * Created by tlh on 2016/8/26 :) */ public interface UserService { @GET("users/{user}") Observable<UserInfo> getUserInfo(@Path("user") String user); @GET("users/{user}/followers") Observable<List<UserEntity>> listFollowers(@Path("user") String user); @GET("users/{user}/followers") Observable<List<UserEntity>> listFollowers(@Path("user") String user, @Query("page") int page); @GET("users/{user}/followers") Observable<List<UserEntity>> listFollowers(@Path("user") String user, @Query("page") int page, @Query("per_page") int pageSize); @GET("users/{user}/following") Observable<List<UserEntity>> listFollowing(@Path("user") String user); @GET("users/{user}/following") Observable<List<UserEntity>> listFollowing(@Path("user") String user, @Query("page") int page); @GET("users/{user}/following") Observable<List<UserEntity>> listFollowing(@Path("user") String user, @Query("page") int page, @Query("per_page") int pageSize); @GET("user/following/{username}") Observable<Response<ResponseBody>> checkIfFollowing(@Path("username") String user); @PUT("user/following/{username}") Observable<Response<ResponseBody>> toFollow(@Path("username") String user); @DELETE("user/following/{username}") Observable<Response<ResponseBody>> toUnFollow(@Path("username") String user); @GET("users/{user}/starred") Observable<List<RepositoryInfo>> listStarredRepo(@Path("user") String user); @GET("users/{user}/starred") Observable<List<RepositoryInfo>> listStarredRepo(@Path("user") String user, @Query("sort") String sort, @Query("page") int page, @Query("per_page") int pageSize); @GET("users/{user}/subscriptions") //https://developer.github.com/v3/activity/watching Observable<List<RepositoryInfo>> listWatchingRepo(@Path("user") String user); @GET("users/{user}/subscriptions") Observable<List<RepositoryInfo>> listWatchingRepo(@Path("user") String user, @Query("page") int page); @GET("users/{user}/subscriptions") Observable<List<RepositoryInfo>> listWatchingRepo(@Path("user") String user, @Query("page") int page, @Query("per_page") int pageSize); @GET("users/{user}/repos") Observable<List<RepositoryInfo>> listOwnRepo(@Path("user") String user); @GET("users/{user}/repos") Observable<List<RepositoryInfo>> listOwnRepo(@Path("user") String user, @Query("page") int page); @GET("users/{user}/received_events") Observable<List<Event>> listNews(@Path("user") String user); @GET("users/{user}/received_events") Observable<List<Event>> listNews(@Path("user") String user, @Query("page") int page); @GET("users/{user}/received_events") Observable<List<Event>> listNews(@Path("user") String user, @Query("page") int page, @Query("per_page") int pageSize); @GET("search/users") Observable<SearchResult<UserEntity>> search(@Query(value = "q", encoded = true) String keyWord, @Query("per_page") int pageSize); @GET("search/users") Observable<SearchResult<UserEntity>> search(@Query(value = "q", encoded = true) String keyWord, @Query("sort") String sort, @Query("page") int page, @Query("per_page") int pageSize); @POST("/authorizations") Observable<Authorization> createAuthorization(@Body CreateAuthorization createAuthorization); }