package com.instructure.canvasapi.api; import com.instructure.canvasapi.model.Bookmark; import com.instructure.canvasapi.utilities.CanvasCallback; import com.instructure.canvasapi.utilities.CanvasRestAdapter; import retrofit.Callback; import retrofit.RestAdapter; import retrofit.http.Body; import retrofit.http.DELETE; import retrofit.http.GET; import retrofit.http.POST; import retrofit.http.PUT; import retrofit.http.Path; import retrofit.http.Query; public class BookmarkAPI extends BuildInterfaceAPI { public static String getBookmarksCacheFilename(){ return "/users/self/bookmarks"; } interface BookmarkInterface { @GET("/users/self/bookmarks") void getBookmarks(Callback<Bookmark[]> callback); @GET("/users/self/bookmarks/{id}") void getBookmark(@Path("id") long bookmarkId, Callback<Bookmark> callback); @POST("/users/self/bookmarks") void createBookmark( @Query("name") String name, @Query(value = "url", encodeValue = true) String url, @Query("position") int position, @Body String body, Callback<Bookmark> callback); @PUT("/users/self/bookmarks/{id}") void updateBookmark(@Path("id") long bookmarkId, @Query("name") String name, @Query(value = "url", encodeValue = false) String url, @Query("position") int position, @Body String body, Callback<Bookmark> callback); @DELETE("/users/self/bookmarks/{id}") void deleteBookmark(@Path("id") long bookmarkId, Callback<Bookmark> callback); } ///////////////////////////////////////////////////////////////////////// // API Calls ///////////////////////////////////////////////////////////////////////// public static void getBookmarks(CanvasCallback<Bookmark[]> callback) { buildCacheInterface(BookmarkInterface.class, callback).getBookmarks(callback); buildInterface(BookmarkInterface.class, callback).getBookmarks(callback); } public static void getBookmark(long bookmarkId, CanvasCallback<Bookmark> callback) { buildCacheInterface(BookmarkInterface.class, callback).getBookmark(bookmarkId, callback); buildInterface(BookmarkInterface.class, callback).getBookmark(bookmarkId, callback); } public static void createBookmark(Bookmark bookmark, CanvasCallback<Bookmark> callback) { buildInterface(BookmarkInterface.class, callback, false).createBookmark(bookmark.getName(), bookmark.getUrl(), bookmark.getPosition(), "", callback); } public static void deleteBookmark(Bookmark bookmark, CanvasCallback<Bookmark> callback) { deleteBookmark(bookmark.getId(), callback); } public static void deleteBookmark(long bookmarkId, CanvasCallback<Bookmark> callback) { buildInterface(BookmarkInterface.class, callback, false).deleteBookmark(bookmarkId, callback); } public static void update(Bookmark bookmark, CanvasCallback<Bookmark> callback) { buildInterface(BookmarkInterface.class, callback, false).updateBookmark(bookmark.getId(), bookmark.getName(), bookmark.getUrl(), bookmark.getPosition(), "", callback); } }