@Operation(httpMethods = "POST", bodyParam = "album") public Future<?> create(SocialRequestItem request) throws ProtocolException { // Retrieve userIds and albumIds Set<UserId> userIds = request.getUsers(); List<String> albumIds = request.getListParameter("albumId"); // Preconditions - exactly one userId specified, no albumIds specified HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); HandlerPreconditions.requireSingular(userIds, "Multiple userIds not supported"); HandlerPreconditions.requireEmpty(albumIds, "Cannot specify albumId in create"); return service.createAlbum(Iterables.getOnlyElement(userIds), request.getAppId(), request.getTypedParameter("album", Album.class), request.getToken()); }
@Operation(httpMethods = "DELETE") public Future<?> delete(SocialRequestItem request) throws ProtocolException { // Get users, Album ID, and MediaItem ID Set<UserId> userIds = request.getUsers(); Set<String> albumIds = ImmutableSet.copyOf(request.getListParameter("albumId")); Set<String> mediaItemIds = ImmutableSet.copyOf(getRequestMediaItemIds(request)); // Exactly one user, Album, and MediaItem must be specified HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); HandlerPreconditions.requireSingular(userIds, "Exactly one user ID must be specified"); HandlerPreconditions.requireSingular(albumIds, "Exactly one Album ID must be specified"); HandlerPreconditions.requireSingular(mediaItemIds, "Exactly one MediaItem ID must be specified"); // Service request return service.deleteMediaItem(Iterables.getOnlyElement(userIds), request.getAppId(), Iterables.getOnlyElement(albumIds), Iterables.getOnlyElement(mediaItemIds), request.getToken()); }
HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); if (userIds.size() > 1 && !optionalActivityIds.isEmpty()) { throw new IllegalArgumentException("Cannot fetch same activityIds for multiple userIds");
@Operation(httpMethods = "DELETE") public Future<?> delete(SocialRequestItem request) throws ProtocolException { // Get users, Album ID, and MediaItem ID Set<UserId> userIds = request.getUsers(); Set<String> albumIds = ImmutableSet.copyOf(request.getListParameter("albumId")); Set<String> mediaItemIds = ImmutableSet.copyOf(getRequestMediaItemIds(request)); // Exactly one user, Album, and MediaItem must be specified HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); HandlerPreconditions.requireSingular(userIds, "Exactly one user ID must be specified"); HandlerPreconditions.requireSingular(albumIds, "Exactly one Album ID must be specified"); HandlerPreconditions.requireSingular(mediaItemIds, "Exactly one MediaItem ID must be specified"); // Service request return service.deleteMediaItem(Iterables.getOnlyElement(userIds), request.getAppId(), Iterables.getOnlyElement(albumIds), Iterables.getOnlyElement(mediaItemIds), request.getToken()); }
HandlerPreconditions.requireNotEmpty(userIds, "No user ID specified");
@Operation(httpMethods = "DELETE") public Future<?> delete(SocialRequestItem request) throws ProtocolException { // Get users, Album ID, and MediaItem ID Set<UserId> userIds = request.getUsers(); Set<String> albumIds = ImmutableSet.copyOf(request.getListParameter("albumId")); Set<String> mediaItemIds = ImmutableSet.copyOf(request.getListParameter("mediaItemId")); // Exactly one user, Album, and MediaItem must be specified HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); HandlerPreconditions.requireSingular(userIds, "Exactly one user ID must be specified"); HandlerPreconditions.requireSingular(albumIds, "Exactly one Album ID must be specified"); HandlerPreconditions.requireSingular(mediaItemIds, "Exactly one MediaItem ID must be specified"); // Service request return service.deleteMediaItem(Iterables.getOnlyElement(userIds), request.getAppId(), Iterables.getOnlyElement(albumIds), Iterables.getOnlyElement(mediaItemIds), request.getToken()); }
@Operation(httpMethods = "POST", bodyParam = "album") public Future<?> create(SocialRequestItem request) throws ProtocolException { // Retrieve userIds and albumIds Set<UserId> userIds = request.getUsers(); List<String> albumIds = request.getListParameter("albumId"); // Preconditions - exactly one userId specified, no albumIds specified HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); HandlerPreconditions.requireSingular(userIds, "Multiple userIds not supported"); HandlerPreconditions.requireEmpty(albumIds, "Cannot specify albumId in create"); return service.createAlbum(Iterables.getOnlyElement(userIds), request.getAppId(), request.getTypedParameter("album", Album.class), request.getToken()); }
HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); if (userIds.size() > 1 && !optionalActivityIds.isEmpty()) { throw new IllegalArgumentException("Cannot fetch same activityIds for multiple userIds");
@Operation(httpMethods = "PUT", bodyParam = "album") public Future<?> update(SocialRequestItem request) throws ProtocolException { // Retrieve userIds and albumIds Set<UserId> userIds = request.getUsers(); List<String> albumIds = request.getListParameter("albumId"); // Enforce preconditions - exactly one user and one album specified HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); HandlerPreconditions.requireSingular(userIds, "Multiple userIds not supported"); HandlerPreconditions.requireNotEmpty(albumIds, "No albumId specified"); HandlerPreconditions.requireSingular(albumIds, "Multiple albumIds not supported"); return service.updateAlbum(Iterables.getOnlyElement(userIds), request.getAppId(), request.getTypedParameter("album", Album.class), Iterables.getOnlyElement(albumIds), request.getToken()); }
@Operation(httpMethods = "POST", bodyParam = "album") public Future<?> create(SocialRequestItem request) throws ProtocolException { // Retrieve userIds and albumIds Set<UserId> userIds = request.getUsers(); List<String> albumIds = request.getListParameter("albumId"); // Preconditions - exactly one userId specified, no albumIds specified HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); HandlerPreconditions.requireSingular(userIds, "Multiple userIds not supported"); HandlerPreconditions.requireEmpty(albumIds, "Cannot specify albumId in create"); return service.createAlbum(Iterables.getOnlyElement(userIds), request.getAppId(), request.getTypedParameter("album", Album.class), request.getToken()); }
HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); if (userIds.size() > 1 && !optionalActivityIds.isEmpty()) { throw new IllegalArgumentException("Cannot fetch same activityIds for multiple userIds");
@Operation(httpMethods = "PUT", bodyParam = "album") public Future<?> update(SocialRequestItem request) throws ProtocolException { // Retrieve userIds and albumIds Set<UserId> userIds = request.getUsers(); List<String> albumIds = request.getListParameter("albumId"); // Enforce preconditions - exactly one user and one album specified HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); HandlerPreconditions.requireSingular(userIds, "Multiple userIds not supported"); HandlerPreconditions.requireNotEmpty(albumIds, "No albumId specified"); HandlerPreconditions.requireSingular(albumIds, "Multiple albumIds not supported"); return service.updateAlbum(Iterables.getOnlyElement(userIds), request.getAppId(), request.getTypedParameter("album", Album.class), Iterables.getOnlyElement(albumIds), request.getToken()); }
/** * Creates a new message collection or message */ @Operation(httpMethods = "POST", bodyParam = "entity") public Future<?> create(SocialRequestItem request) throws ProtocolException { Set<UserId> userIds = request.getUsers(); String msgCollId = request.getParameter("msgCollId"); List<String> messageIds = request.getListParameter("messageIds"); HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); HandlerPreconditions.requireSingular(userIds, "Multiple userIds not supported"); UserId user = request.getUsers().iterator().next(); if (msgCollId == null) { // Request to create a new message collection MessageCollection msgCollection = request.getTypedParameter("entity", MessageCollection.class); return service.createMessageCollection(user, msgCollection, request.getToken()); } // A message collection has been specified, allow for posting HandlerPreconditions.requireEmpty(messageIds,"Message IDs not allowed here, use PUT instead"); Message message = request.getTypedParameter("entity", Message.class); HandlerPreconditions.requireNotEmpty(message.getRecipients(), "No recipients specified"); return service.createMessage(userIds.iterator().next(), request.getAppId(), msgCollId, message, request.getToken()); }
@Operation(httpMethods = "GET") public Future<?> get(SocialRequestItem request) throws ProtocolException { // Get user, group, and album IDs Set<UserId> userIds = request.getUsers(); Set<String> optionalAlbumIds = ImmutableSet.copyOf(request .getListParameter("albumId")); // At least one userId must be specified HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); // If multiple userIds specified, albumIds must not be specified if (userIds.size() > 1 && !optionalAlbumIds.isEmpty()) { throw new IllegalArgumentException("Cannot fetch same albumIds for multiple userIds"); } // Retrieve albums by ID if (!optionalAlbumIds.isEmpty()) { if (optionalAlbumIds.size() == 1) { return service.getAlbum(Iterables.getOnlyElement(userIds), request.getAppId(), request.getFields(), optionalAlbumIds.iterator().next(), request.getToken()); } else { return service.getAlbums(Iterables.getOnlyElement(userIds), request.getAppId(), request.getFields(), new CollectionOptions(request), optionalAlbumIds, request.getToken()); } } // Retrieve albums by group return service.getAlbums(userIds, request.getGroup(), request .getAppId(), request.getFields(), new CollectionOptions(request), request.getToken()); }
@Operation(httpMethods = "PUT", bodyParam = "album") public Future<?> update(SocialRequestItem request) throws ProtocolException { // Retrieve userIds and albumIds Set<UserId> userIds = request.getUsers(); List<String> albumIds = request.getListParameter("albumId"); // Enforce preconditions - exactly one user and one album specified HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); HandlerPreconditions.requireSingular(userIds, "Multiple userIds not supported"); HandlerPreconditions.requireNotEmpty(albumIds, "No albumId specified"); HandlerPreconditions.requireSingular(albumIds, "Multiple albumIds not supported"); return service.updateAlbum(Iterables.getOnlyElement(userIds), request.getAppId(), request.getTypedParameter("album", Album.class), Iterables.getOnlyElement(albumIds), request.getToken()); }
/** * Allowed end-points /activities/{userId}/@self * * examples: /activities/john.doe/@self - postBody is an activity object */ @Operation(httpMethods="POST", bodyParam = "activity") public Future<?> create(SocialRequestItem request) throws ProtocolException { Set<UserId> userIds = request.getUsers(); List<String> activityIds = request.getListParameter("activityId"); HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); HandlerPreconditions.requireSingular(userIds, "Multiple userIds not supported"); // TODO(lryan) This seems reasonable to allow on PUT but we don't have an update verb. HandlerPreconditions.requireEmpty(activityIds, "Cannot specify activityId in create"); return service.createActivity(Iterables.getOnlyElement(userIds), request.getGroup(), request.getAppId(), request.getFields(), request.getTypedParameter("activity", Activity.class), request.getToken()); }
@Operation(httpMethods = "GET") public Future<?> get(SocialRequestItem request) throws ProtocolException { // Get user, group, and album IDs Set<UserId> userIds = request.getUsers(); Set<String> optionalAlbumIds = ImmutableSet.copyOf(request .getListParameter("albumId")); // At least one userId must be specified HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); // If multiple userIds specified, albumIds must not be specified if (userIds.size() > 1 && !optionalAlbumIds.isEmpty()) { throw new IllegalArgumentException("Cannot fetch same albumIds for multiple userIds"); } // Retrieve albums by ID if (!optionalAlbumIds.isEmpty()) { if (optionalAlbumIds.size() == 1) { return service.getAlbum(Iterables.getOnlyElement(userIds), request.getAppId(), request.getFields(), optionalAlbumIds.iterator().next(), request.getToken()); } else { return service.getAlbums(Iterables.getOnlyElement(userIds), request.getAppId(), request.getFields(), collectionOptionsFactory.create(request), optionalAlbumIds, request.getToken()); } } // Retrieve albums by group return service.getAlbums(userIds, request.getGroup(), request .getAppId(), request.getFields(), collectionOptionsFactory.create(request), request.getToken()); }
@Operation(httpMethods = "PUT", bodyParam = "mediaItem") public Future<?> update(SocialRequestItem request) throws ProtocolException { // Retrieve userIds, albumIds, and mediaItemIds Set<UserId> userIds = request.getUsers(); Set<String> albumIds = ImmutableSet.copyOf(request.getListParameter("albumId")); Set<String> mediaItemIds = ImmutableSet.copyOf(request.getListParameter("mediaItemIds")); // Exactly one user, Album, and MediaItem must be specified HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); HandlerPreconditions.requireSingular(userIds, "Exactly one user ID must be specified"); HandlerPreconditions.requireSingular(albumIds, "Exactly one Album ID must be specified"); HandlerPreconditions.requireSingular(mediaItemIds, "Exactly one MediaItem ID must be specified"); // Service request return service.updateMediaItem(Iterables.getOnlyElement(userIds), request.getAppId(), Iterables.getOnlyElement(albumIds), Iterables.getOnlyElement(mediaItemIds), request.getTypedParameter("mediaItem", MediaItem.class), request.getToken()); }
/** * Allowed end-points /activities/{userId}/@self * * examples: /activities/john.doe/@self - postBody is an activity object */ @Operation(httpMethods="POST", bodyParam = "activity") public Future<?> create(SocialRequestItem request) throws ProtocolException { Set<UserId> userIds = request.getUsers(); List<String> activityIds = request.getListParameter("activityId"); HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); HandlerPreconditions.requireSingular(userIds, "Multiple userIds not supported"); // TODO(lryan) This seems reasonable to allow on PUT but we don't have an update verb. HandlerPreconditions.requireEmpty(activityIds, "Cannot specify activityId in create"); return service.createActivity(Iterables.getOnlyElement(userIds), request.getGroup(), request.getAppId(), request.getFields(), request.getTypedParameter("activity", Activity.class), request.getToken()); }
@Operation(httpMethods = "GET") public Future<?> get(SocialRequestItem request) throws ProtocolException { // Get user, group, and album IDs Set<UserId> userIds = request.getUsers(); Set<String> optionalAlbumIds = ImmutableSet.copyOf(request .getListParameter("albumId")); // At least one userId must be specified HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); // If multiple userIds specified, albumIds must not be specified if (userIds.size() > 1 && !optionalAlbumIds.isEmpty()) { throw new IllegalArgumentException("Cannot fetch same albumIds for multiple userIds"); } // Retrieve albums by ID if (!optionalAlbumIds.isEmpty()) { if (optionalAlbumIds.size() == 1) { return service.getAlbum(Iterables.getOnlyElement(userIds), request.getAppId(), request.getFields(), optionalAlbumIds.iterator().next(), request.getToken()); } else { return service.getAlbums(Iterables.getOnlyElement(userIds), request.getAppId(), request.getFields(), collectionOptionsFactory.create(request), optionalAlbumIds, request.getToken()); } } // Retrieve albums by group return service.getAlbums(userIds, request.getGroup(), request .getAppId(), request.getFields(), collectionOptionsFactory.create(request), request.getToken()); }