package com.etiennelawlor.loop.network;
import com.etiennelawlor.loop.network.models.request.CommentPost;
import com.etiennelawlor.loop.network.models.response.CategoriesEnvelope;
import com.etiennelawlor.loop.network.models.response.Comment;
import com.etiennelawlor.loop.network.models.response.CommentsEnvelope;
import com.etiennelawlor.loop.network.models.response.FeedItemsEnvelope;
import com.etiennelawlor.loop.network.models.response.OAuthResponse;
import com.etiennelawlor.loop.network.models.response.VideosEnvelope;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Path;
import retrofit2.http.Query;
/**
* Created by etiennelawlor on 6/14/15.
*/
public interface VimeoService {
String BASE_URL = "https://api.vimeo.com/";
@FormUrlEncoded
@POST("oauth/access_token")
Call<OAuthResponse> exchangeCode(@Field("grant_type") String grantType,
@Field("code") String code,
@Field("redirect_uri") String redirectUri);
@GET("videos")
Call<VideosEnvelope> findVideos(@Query("query") String query,
@Query("sort") String sort,
@Query("direction") String direction,
@Query("page") Integer page,
@Query("per_page") Integer perPage,
@Query("filter") String filter);
@GET("videos/{videoId}/comments")
Call<CommentsEnvelope> getComments(@Path("videoId") Long videoId,
@Query("sort") String sort,
@Query("direction") String direction,
@Query("page") Integer page,
@Query("per_page") Integer perPage);
@POST("videos/{videoId}/comments")
Call<Comment> addComment(@Path("videoId") Long videoId,
@Body CommentPost commentPost);
@DELETE("videos/{videoId}/comments/{commentId}")
Call<ResponseBody> deleteComment(@Path("videoId") Long videoId,
@Path("commentId") Long commentId);
@GET("videos/{videoId}/videos?filter=related")
Call<VideosEnvelope> findRelatedVideos(@Path("videoId") Long videoId,
@Query("page") Integer page,
@Query("per_page") Integer perPage);
@GET("users/{userId}/videos")
Call<VideosEnvelope> getUserVideos(@Path("userId") Long userId,
@Query("page") Integer page,
@Query("per_page") Integer perPage);
@GET("categories")
Call<CategoriesEnvelope> getCategories();
@GET("me/likes")
Call<VideosEnvelope> findLikedVideos(@Query("query") String query,
@Query("sort") String sort,
@Query("direction") String direction,
@Query("page") Integer page,
@Query("per_page") Integer perPage);
@GET("me/watchlater")
Call<VideosEnvelope> findWatchLaterVideos(@Query("query") String query,
@Query("sort") String sort,
@Query("direction") String direction,
@Query("page") Integer page,
@Query("per_page") Integer perPage);
@GET("me/feed")
Call<FeedItemsEnvelope> findMyFeedVideos(@Query("page") Integer page,
@Query("per_page") Integer perPage);
@PUT("me/likes/{videoId}")
Call<ResponseBody> likeVideo(@Path("videoId") String videoId);
@DELETE("me/likes/{videoId}")
Call<ResponseBody> unlikeVideo(@Path("videoId") String videoId);
@PUT("me/watchlater/{videoId}")
Call<ResponseBody> addVideoToWatchLater(@Path("videoId") String videoId);
@DELETE("me/watchlater/{videoId}")
Call<ResponseBody> removeVideoFromWatchLater(@Path("videoId") String videoId);
}