package org.magnum.videoup.client;
import java.util.Collection;
import retrofit.http.Body;
import retrofit.http.GET;
import retrofit.http.POST;
import retrofit.http.Query;
/**
* This interface defines an API for a VideoSvc. The
* interface is used to provide a contract for client/server
* interactions. The interface is annotated with Retrofit
* annotations so that clients can automatically convert the
*
*
* @author jules
*
*/
public interface VideoSvcApi {
public static final String PASSWORD_PARAMETER = "password";
public static final String USERNAME_PARAMETER = "username";
public static final String TITLE_PARAMETER = "title";
public static final String DURATION_PARAMETER = "duration";
public static final String TOKEN_PATH = "/oauth/token";
// The path where we expect the VideoSvc to live
public static final String VIDEO_SVC_PATH = "/video";
// The path to search videos by title
public static final String VIDEO_TITLE_SEARCH_PATH = VIDEO_SVC_PATH + "/search/findByName";
// The path to search videos by title
public static final String VIDEO_DURATION_SEARCH_PATH = VIDEO_SVC_PATH + "/search/findByDurationLessThan";
@GET(VIDEO_SVC_PATH)
public Collection<Video> getVideoList();
@POST(VIDEO_SVC_PATH)
public Void addVideo(@Body Video v);
@GET(VIDEO_TITLE_SEARCH_PATH)
public Collection<Video> findByTitle(@Query(TITLE_PARAMETER) String title);
@GET(VIDEO_DURATION_SEARCH_PATH)
public Collection<Video> findByDurationLessThan(@Query(DURATION_PARAMETER) String title);
}