package com.instructure.canvasapi.api; import com.instructure.canvasapi.model.Group; import com.instructure.canvasapi.model.GroupCategory; import com.instructure.canvasapi.model.User; import com.instructure.canvasapi.utilities.APIHelpers; import com.instructure.canvasapi.utilities.CanvasCallback; import retrofit.Callback; import retrofit.http.Body; import retrofit.http.GET; import retrofit.http.POST; import retrofit.http.Path; import retrofit.http.Query; /** * * Copyright (c) 2014 Instructure. All rights reserved. */ public class GroupCategoriesAPI extends BuildInterfaceAPI { interface GroupCategoriesInterface { @GET("/group_categories/{group_categories_id}/users") void getUsersForGroupCategory(@Path("group_categories_id") long groupCategoryId, CanvasCallback<User[]> callback); @GET("/courses/{course_id}/group_categories") void getFirstPageGroupCategories(@Path("course_id") long courseId, CanvasCallback<GroupCategory[]> callback); @GET("/{next}") void getNextPageGroupCategories(@Path(value = "next", encode = false) String nextURL, Callback<GroupCategory[]> callback); @POST("/courses/{course_id}/group_categories") void createGroupCategoryForCourse(@Path("course_id") long courseId, @Query("name") String name, @Body String body, CanvasCallback<GroupCategory> callback); @GET("/group_categories/{group_category_id}/groups") void getFirstPageGroupsFromCategory(@Path("group_category_id") long groupCategoryId, CanvasCallback<Group[]> callback); @GET("/group_categories/{group_category_id}/users") void getFirstPageUsersInCategory(@Path("group_category_id") long groupCategoryId, @Query("unassigned") boolean onlyIncludeUnassigned, CanvasCallback<User[]> callback); @GET("/{next}") void getNextPageUsersInCategory(@Path(value = "next", encode = false) String nextURL, Callback<User[]> callback); } ///////////////////////////////////////////////////////////////////////// // API Calls ///////////////////////////////////////////////////////////////////////// public static void getFirstPageGroupsInCourse(long groupCategoryId, CanvasCallback<User[]> callback) { if (APIHelpers.paramIsNull(callback)) return; buildCacheInterface(GroupCategoriesInterface.class, callback).getUsersForGroupCategory(groupCategoryId, callback); buildInterface(GroupCategoriesInterface.class, callback).getUsersForGroupCategory(groupCategoryId, callback); } public static void createGroupCategoryForCourse(long courseId, String name, CanvasCallback<GroupCategory> callback) { if(APIHelpers.paramIsNull(name, callback)) return; buildInterface(GroupCategoriesInterface.class, callback).createGroupCategoryForCourse(courseId, name, "", callback); } public static void getFirstPageGroupCategoriesInCourse(long courseId, CanvasCallback<GroupCategory[]> callback) { if(APIHelpers.paramIsNull(callback)) return; buildCacheInterface(GroupCategoriesInterface.class, callback).getFirstPageGroupCategories(courseId, callback); buildInterface(GroupCategoriesInterface.class, callback).getFirstPageGroupCategories(courseId, callback); } public static void getNextPageGroupCategoriesInCourse(String nextURL, CanvasCallback<GroupCategory[]> callback) { if (APIHelpers.paramIsNull(callback, nextURL)) return; callback.setIsNextPage(true); buildCacheInterface(GroupCategoriesInterface.class, callback, false).getNextPageGroupCategories(nextURL, callback); buildInterface(GroupCategoriesInterface.class, callback, false).getNextPageGroupCategories(nextURL, callback); } public static void getFirstPageGroupsFromCategory(long groupCategoryId, CanvasCallback<Group[]> callback) { if(APIHelpers.paramIsNull(callback)) return; buildCacheInterface(GroupCategoriesInterface.class, callback).getFirstPageGroupsFromCategory(groupCategoryId, callback); buildInterface(GroupCategoriesInterface.class, callback).getFirstPageGroupsFromCategory(groupCategoryId, callback); } public static void getFirstPageUsersInCategory(long groupCategoryId, boolean onlyIncludeUnassigned, CanvasCallback<User[]> callback) { if(APIHelpers.paramIsNull(callback)) return; buildCacheInterface(GroupCategoriesInterface.class, callback).getFirstPageUsersInCategory(groupCategoryId, onlyIncludeUnassigned, callback); buildInterface(GroupCategoriesInterface.class, callback).getFirstPageUsersInCategory(groupCategoryId, onlyIncludeUnassigned, callback); } public static void getNextPageUsersInCategory(String nextURL, CanvasCallback<User[]> callback) { if (APIHelpers.paramIsNull(callback, nextURL)) return; callback.setIsNextPage(true); buildCacheInterface(GroupCategoriesInterface.class, callback, false).getNextPageUsersInCategory(nextURL, callback); buildInterface(GroupCategoriesInterface.class, callback, false).getNextPageUsersInCategory(nextURL, callback); } }