예제 #1
0
 /**
  * /messages/{groupId}/outbox/{msgId}
  * /messages/{groupId}/outbox
  *
  * @param RequestItem $requestItem
  * @return responseItem
  */
 public function handlePost(RequestItem $requestItem)
 {
     $requestItem->applyUrlTemplate(self::$MESSAGES_PATH);
     $userIds = $requestItem->getUsers();
     $message = $requestItem->getParameter('message');
     $optionalMessageId = $requestItem->getParameter('msgId');
     return $this->service->createMessage($userIds[0], $requestItem->getAppId(), $message, $optionalMessageId, $requestItem->getToken());
 }
예제 #2
0
 /**
  * Updates the album. The URI structure: /{userId}/{groupId}/{albumId}
  */
 public function handlePut(RequestItem $requestItem)
 {
     $this->checkService();
     $requestItem->applyUrlTemplate(self::$ALBUM_PATH);
     $userIds = $requestItem->getUsers();
     $groupId = $requestItem->getGroup();
     $albumIds = $requestItem->getListParameter('albumId');
     $album = $requestItem->getParameter('album');
     HandlerPreconditions::requireSingular($userIds, "userId must be singular value");
     HandlerPreconditions::requireNotEmpty($groupId, "groupId must be specified.");
     HandlerPreconditions::requireSingular($albumIds, "albumId must be singular value.");
     HandlerPreconditions::requireNotEmpty($album, "album must be specified.");
     $album['id'] = $albumIds[0];
     return $this->service->updateAlbum($userIds[0], $groupId, $album, $requestItem->getToken());
 }
예제 #3
0
 /**
  * /appdata/{userId}/{groupId}/{appId}
  * - fields={field1, field2}
  *
  * examples:
  * /appdata/john.doe/@friends/app?fields=count
  * /appdata/john.doe/@self/app
  *
  * The post data should be a regular json object. All of the fields vars will
  * be pulled from the values and set on the person object. If there are no
  * fields vars then all of the data will be overridden.
  */
 public function handlePost(RequestItem $requestItem)
 {
     $this->checkService();
     $requestItem->applyUrlTemplate(self::$APP_DATA_PATH);
     $userIds = $requestItem->getUsers();
     if (count($userIds) < 1) {
         throw new InvalidArgumentException("No userId specified");
     } elseif (count($userIds) > 1) {
         throw new InvalidArgumentException("Multiple userIds not supported");
     }
     $values = $requestItem->getParameter("data");
     // this used to be $requestItem->getFields() instead of using the fields, but that makes no sense to me
     // better to detect the fields depending on input right?
     $fields = array();
     foreach (array_keys($values) as $key) {
         $fields[] = $key;
         if (!$this->isValidKey($key)) {
             throw new SocialSpiException("One or more of the app data keys are invalid: " . $key, ResponseError::$BAD_REQUEST);
         }
     }
     $this->service->updatePersonData($userIds[0], $requestItem->getGroup(), $requestItem->getAppId(), $fields, $values, $requestItem->getToken());
 }
 /**
  * /activities/{userId}/@self
  *
  * examples:
  * /activities/@viewer/@self/@app
  * /activities/john.doe/@self
  * - postBody is an activity object
  *
  * @param RequestItem $requestItem
  * @return ResponseItem
  */
 public function handlePost(RequestItem $requestItem)
 {
     $this->checkService();
     $requestItem->applyUrlTemplate(self::$ACTIVITY_ID_PATH);
     $userIds = $requestItem->getUsers();
     $activityIds = $requestItem->getListParameter("activityId");
     if (empty($userIds)) {
         throw new InvalidArgumentException("No userId specified");
     } elseif (count($userIds) > 1) {
         throw new InvalidArgumentException("Multiple userIds not supported");
     }
     // TODO This seems reasonable to allow on PUT but we don't have an update verb.
     if (!empty($activityIds)) {
         throw new InvalidArgumentException("Cannot specify activityId in create");
     }
     /*
      * Note, on just about all types of social networks you would only allow activities to be created when the owner == viewer, and the userId == viewer as well, in code this would mean:
      *  if ($token->getOwnerId() != $token->getViewerId() || $token->getViewerId() != $userId->getUserId($token)) {
      *    throw new SocialSpiException("Create activity permission denied.", ResponseError::$UNAUTHORIZED);
      *  }
      */
     return $this->service->createActivity($userIds[0], $requestItem->getGroup(), $requestItem->getAppId(), $requestItem->getFields(), $requestItem->getParameter("activity"), $requestItem->getToken());
 }
예제 #5
0
 /**
  * /activities/{userId}/@self
  *
  * examples:
  * /activities/@viewer/@self/@app
  * /activities/john.doe/@self
  * - postBody is an activity object
  */
 public function handlePost(RequestItem $requestItem)
 {
     $requestItem->applyUrlTemplate(self::$ACTIVITY_ID_PATH);
     $userIds = $requestItem->getUsers();
     $activityIds = $requestItem->getListParameter("activityId");
     if (empty($userIds)) {
         throw new InvalidArgumentException("No userId specified");
     } elseif (count($userIds) > 1) {
         throw new InvalidArgumentException("Multiple userIds not supported");
     }
     // TODO This seems reasonable to allow on PUT but we don't have an update verb.
     if (!empty($activityIds)) {
         throw new InvalidArgumentException("Cannot specify activityId in create");
     }
     return $this->service->createActivity($userIds[0], $requestItem->getGroup(), $requestItem->getAppId(), $requestItem->getFields(), $requestItem->getParameter("activity"), $requestItem->getToken());
 }
예제 #6
0
 /**
  * Updates a message or a message collection.
  */
 public function handlePut(RequestItem $requestItem)
 {
     $this->checkService();
     $requestItem->applyUrlTemplate(self::$MESSAGES_PATH);
     $userIds = $requestItem->getUsers();
     HandlerPreconditions::requireSingular($userIds, "UserId is not singular.");
     $msgCollId = $requestItem->getParameter("msgCollId");
     HandlerPreconditions::requireNotEmpty($msgCollId, "msgCollId is required.");
     $messageIds = $requestItem->getListParameter("messageId");
     if (empty($messageIds)) {
         // Updates message collection.
         $messageCollection = $requestItem->getParameter("entity");
         $messageCollection['id'] = $msgCollId;
         HandlerPreconditions::requireNotEmpty($messageCollection, "Can't parse message collection.");
         return $this->service->updateMessageCollection($userIds[0], $messageCollection, $requestItem->getToken());
     } else {
         // Updates a message.
         HandlerPreconditions::requireSingular($messageIds, "Message id is not singular.");
         $message = $requestItem->getParameter("entity");
         $message['id'] = $messageIds[0];
         HandlerPreconditions::requireNotEmpty($message, "Can't parse message.");
         return $this->service->updateMessage($userIds[0], $msgCollId, $message, $requestItem->getToken());
     }
 }