package com.fastaccess.data.service;
import android.support.annotation.NonNull;
import com.fastaccess.data.dao.Pageable;
import com.fastaccess.data.dao.model.Event;
import com.fastaccess.data.dao.model.Login;
import com.fastaccess.data.dao.model.Repo;
import com.fastaccess.data.dao.model.User;
import retrofit2.Response;
import retrofit2.http.DELETE;
import retrofit2.http.GET;
import retrofit2.http.PUT;
import retrofit2.http.Path;
import retrofit2.http.Query;
import rx.Observable;
/**
* Created by Kosh on 08 Feb 2017, 8:54 PM
*/
public interface UserRestService {
@GET("user") Observable<Login> getUser();
@GET("users/{username}") Observable<User> getUser(@Path("username") @NonNull String username);
@GET("users/{username}/received_events")
Observable<Pageable<Event>> getReceivedEvents(@NonNull @Path("username") String userName, @Query("page") int page);
@GET("users/{username}/repos?affiliation=owner,collaborator&sort=pushed&direction=desc")
Observable<Pageable<Repo>> getRepos(@Path("username") @NonNull String username, @Query("page") int page);
@GET("/user/repos?affiliation=owner,collaborator&sort=pushed&direction=desc")
Observable<Pageable<Repo>> getRepos(@Query("page") int page);
@GET("users/{username}/starred") Observable<Pageable<Repo>>
getStarred(@Path("username") @NonNull String username, @Query("page") int page);
@GET("users/{username}/following")
Observable<Pageable<User>> getFollowing(@Path("username") @NonNull String username, @Query("page") int page);
@GET("users/{username}/followers")
Observable<Pageable<User>> getFollowers(@Path("username") @NonNull String username, @Query("page") int page);
@GET("user/following/{username}")
Observable<Response<Boolean>> getFollowStatus(@Path("username") @NonNull String username);
@PUT("/user/following/{username}")
Observable<Response<Boolean>> followUser(@Path("username") @NonNull String username);
@DELETE("/user/following/{username}")
Observable<Response<Boolean>> unfollowUser(@Path("username") @NonNull String username);
}