You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by ch...@apache.org on 2009/08/03 12:55:41 UTC

svn commit: r800295 - in /incubator/shindig/trunk/php: src/social/converters/ src/social/sample/ src/social/service/ src/social/spi/ test/ test/social/

Author: chabotc
Date: Mon Aug  3 10:55:41 2009
New Revision: 800295

URL: http://svn.apache.org/viewvc?rev=800295&view=rev
Log:
SHINDIG-1136 by Jinhui Du, Content uploading support (partial)

Modified:
    incubator/shindig/trunk/php/src/social/converters/InputJsonConverter.php
    incubator/shindig/trunk/php/src/social/sample/JsonDbOpensocialService.php
    incubator/shindig/trunk/php/src/social/service/MediaItemHandler.php
    incubator/shindig/trunk/php/src/social/service/ResponseError.php
    incubator/shindig/trunk/php/src/social/service/RestRequestItem.php
    incubator/shindig/trunk/php/src/social/spi/MediaItemService.php
    incubator/shindig/trunk/php/test/index.php
    incubator/shindig/trunk/php/test/social/MediaItemRestTest.php

Modified: incubator/shindig/trunk/php/src/social/converters/InputJsonConverter.php
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/social/converters/InputJsonConverter.php?rev=800295&r1=800294&r2=800295&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/social/converters/InputJsonConverter.php (original)
+++ incubator/shindig/trunk/php/src/social/converters/InputJsonConverter.php Mon Aug  3 10:55:41 2009
@@ -70,7 +70,9 @@
   public function convertMediaItems($requestParam) {
     $ret = json_decode($requestParam, true);
     if ($ret == $requestParam) {
-      throw new Exception("Mallformed album json string. " . $requestParam);
+    	// The content upload specification allows the content-type in the post
+    	// body to be the binary data of the content.
+    	return null;
     }
     return $ret;
   }

Modified: incubator/shindig/trunk/php/src/social/sample/JsonDbOpensocialService.php
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/social/sample/JsonDbOpensocialService.php?rev=800295&r1=800294&r2=800295&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/social/sample/JsonDbOpensocialService.php (original)
+++ incubator/shindig/trunk/php/src/social/sample/JsonDbOpensocialService.php Mon Aug  3 10:55:41 2009
@@ -814,7 +814,7 @@
     return self::paginateResults($results, $options);
   }
 
-  public function createMediaItem($userId, $groupId, $mediaItem, $data, $token) {
+  public function createMediaItem($userId, $groupId, $mediaItem, $token) {
     $all = $this->getAllMediaItems();
     $albumId = $mediaItem['albumId'];
     $id = isset($all[$albumId]) ? (count($all[$albumId]) + 1) : 0;
@@ -836,7 +836,7 @@
     return $mediaItem;
   }
 
-  public function updateMediaItem($userId, $groupId, $mediaItem, $data, $token) {
+  public function updateMediaItem($userId, $groupId, $mediaItem, $token) {
     $all = $this->getAllMediaItems();
     if (! $all[$mediaItem['albumId']] || ! $all[$mediaItem['albumId']][$mediaItem['id']]) {
       throw new SocialSpiException("MediaItem not found.", ResponseError::$BAD_REQUEST);

Modified: incubator/shindig/trunk/php/src/social/service/MediaItemHandler.php
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/social/service/MediaItemHandler.php?rev=800295&r1=800294&r2=800295&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/social/service/MediaItemHandler.php (original)
+++ incubator/shindig/trunk/php/src/social/service/MediaItemHandler.php Mon Aug  3 10:55:41 2009
@@ -20,18 +20,18 @@
 
 class MediaItemHandler extends DataRequestHandler {
   private static $MEDIA_ITEM_PATH = "/mediaitems/{userId}/{groupId}/{albumId}/{mediaItemId}";
-  
+
   public function __construct() {
     parent::__construct('media_item_service');
   }
-  
+
   /**
    * Deletes the media items. The URI structure: /{userId}/{groupId}/{albumId}/{mediaItemId}+
    */
   public function handleDelete(RequestItem $requestItem) {
     $this->checkService();
     $requestItem->applyUrlTemplate(self::$MEDIA_ITEM_PATH);
-    
+
     $userIds = $requestItem->getUsers();
     $groupId = $requestItem->getGroup();
     $albumIds = $requestItem->getListParameter('albumId');
@@ -50,12 +50,12 @@
   public function handleGet(RequestItem $requestItem) {
     $this->checkService();
     $requestItem->applyUrlTemplate(self::$MEDIA_ITEM_PATH);
-    
+
     $userIds = $requestItem->getUsers();
     $groupId = $requestItem->getGroup();
     $albumIds = $requestItem->getListParameter("albumId");
     $mediaItemIds = $requestItem->getListParameter("mediaItemId");
-        
+
     HandlerPreconditions::requireSingular($userIds, "userId must be singular value.");
     HandlerPreconditions::requireNotEmpty($groupId, "groupId must be specified.");
     HandlerPreconditions::requireSingular($albumIds, "albumId must be singular value.");
@@ -72,19 +72,33 @@
   public function handlePost(RequestItem $requestItem) {
     $this->checkService();
     $requestItem->applyUrlTemplate(self::$MEDIA_ITEM_PATH);
-    
+
     $userIds = $requestItem->getUsers();
     $groupId = $requestItem->getGroup();
     $albumIds = $requestItem->getListParameter('albumId');
     $mediaItem = $requestItem->getParameter('mediaItem');
+    if (! isset($mediaItem)) {
+      // For the content upload REST api. The param is mediaType in the spec now. As there is no mediaType
+      // field in MediaItem. It should be 'type'.
+      $type = $requestItem->getParameter('mediaType');
+      if (! isset($type)) {
+        $type = $requestItem->getParameter('type');
+      }
+      if (in_array($type, MediaItem::$TYPES)) {
+        $mediaItem = array('type' => $type);
+        // Only support title and description for now.
+        $mediaItem['title'] = $requestItem->getParameter('title');
+        $mediaItem['description'] = $requestItem->getParameter('description');
+      }
+    }
 
     HandlerPreconditions::requireSingular($userIds, "userId must be of singular value");
     HandlerPreconditions::requireNotEmpty($groupId, "groupId must be specified.");
     HandlerPreconditions::requireSingular($albumIds, "albumId must be sigular value.");
     HandlerPreconditions::requireNotEmpty($mediaItem, "mediaItem must be specified.");
-    
-    // The null param is the content data(image, video and audio binaries) uploaded by the user.
-    return $this->service->createMediaItem($userIds[0], $groupId, $mediaItem, null, $requestItem->getToken());
+    $mediaItem['albumId'] = $albumIds[0];
+
+    return $this->service->createMediaItem($userIds[0], $groupId, $mediaItem, $requestItem->getToken());
   }
 
   /**
@@ -93,22 +107,21 @@
   public function handlePut(RequestItem $requestItem) {
     $this->checkService();
     $requestItem->applyUrlTemplate(self::$MEDIA_ITEM_PATH);
-    
+
     $userIds = $requestItem->getUsers();
     $groupId = $requestItem->getGroup();
     $albumIds = $requestItem->getListParameter('albumId');
     $mediaItemIds = $requestItem->getListParameter('mediaItemId');
     $mediaItem = $requestItem->getParameter('mediaItem');
-    
+
     HandlerPreconditions::requireSingular($userIds, "userId must be singular value.");
     HandlerPreconditions::requireNotEmpty($groupId, "groupId must be specified.");
     HandlerPreconditions::requireSingular($albumIds, "albumId must be sigular value.");
     HandlerPreconditions::requireSingular($mediaItemIds, "mediaItemId must be sigular value.");
     HandlerPreconditions::requireNotEmpty($mediaItem, "mediaItem must be specified.");
-    
+
     $mediaItem['id'] = $mediaItemIds[0];
     $mediaItem['albumId'] = $albumIds[0];
-    // The null param is the content data(image, video and audio binaries) uploaded by the user.
-    return $this->service->updateMediaItem($userIds[0], $groupId, $mediaItem, null, $requestItem->getToken());
+    return $this->service->updateMediaItem($userIds[0], $groupId, $mediaItem, $requestItem->getToken());
   }
 }

Modified: incubator/shindig/trunk/php/src/social/service/ResponseError.php
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/social/service/ResponseError.php?rev=800295&r1=800294&r2=800295&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/social/service/ResponseError.php (original)
+++ incubator/shindig/trunk/php/src/social/service/ResponseError.php Mon Aug  3 10:55:41 2009
@@ -32,11 +32,13 @@
   public static $BAD_REQUEST = 400;
   /** value representing NOT FOUND. */
   public static $NOT_FOUND = 404;
+  /** value representing content uploading exceeds the quota.*/
+  public static $REQUEST_TOO_LARGE = 413;
   /** value representing INTERNAL SERVER ERROR. */
   public static $INTERNAL_ERROR = 500;
   /** value representing EXPECTATION FAILED. */
   public static $LIMIT_EXCEEDED = 409;
-  
+
   /**
    * The json value of the error.
    */
@@ -45,7 +47,7 @@
    * The http error code associated with the error.
    */
   private $httpErrorCode;
-  
+
   /**
    * The HTTP response header
    */

Modified: incubator/shindig/trunk/php/src/social/service/RestRequestItem.php
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/social/service/RestRequestItem.php?rev=800295&r1=800294&r2=800295&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/social/service/RestRequestItem.php (original)
+++ incubator/shindig/trunk/php/src/social/service/RestRequestItem.php Mon Aug  3 10:55:41 2009
@@ -103,7 +103,9 @@
         break;
       case DataServiceServlet::$MEDIA_ITEM_ROUTE:
         $data = $this->inputConverter->convertMediaItems($this->postData);
-        $this->params['mediaItem'] = $data;
+        if (isset($data)) {
+          $this->params['mediaItem'] = $data;
+        }
         break;
       default:
         throw new Exception("Invalid or unknown service endpoint: $service");

Modified: incubator/shindig/trunk/php/src/social/spi/MediaItemService.php
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/social/spi/MediaItemService.php?rev=800295&r1=800294&r2=800295&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/social/spi/MediaItemService.php (original)
+++ incubator/shindig/trunk/php/src/social/spi/MediaItemService.php Mon Aug  3 10:55:41 2009
@@ -44,11 +44,10 @@
    * @param userId id of the user for whom a media item is to be created
    * @param groupId group id
    * @param mediaItem specifies album-id and media item fields
-   * @param data the image binary data to be uploaded
    * @param token security token to authorize this request
    * @return the created media item
    */
-  public function createMediaItem($userId, $groupId, $mediaItem, $data, $token);
+  public function createMediaItem($userId, $groupId, $mediaItem, $token);
 
   /**
    * Updates a media item in an album. Album id and media item id is taken in
@@ -60,7 +59,7 @@
    * @param token security token
    * @return updated album media item
    */
-  public function updateMediaItem($userId, $groupId, $mediaItem, $data, $token);
+  public function updateMediaItem($userId, $groupId, $mediaItem, $token);
 
   /**
    * Deletes an album media item.

Modified: incubator/shindig/trunk/php/test/index.php
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/php/test/index.php?rev=800295&r1=800294&r2=800295&view=diff
==============================================================================
--- incubator/shindig/trunk/php/test/index.php (original)
+++ incubator/shindig/trunk/php/test/index.php Mon Aug  3 10:55:41 2009
@@ -31,7 +31,7 @@
 function __autoload($className) {
   $basePath = realpath('../');
   $locations = array('src/common', 'src/common/sample', 'src/gadgets', 'src/gadgets/http', 'src/gadgets/oauth',
-      'src/gadgets/render', 'src/gadgets/rewrite', 'src/gadgets/sample', 'src/social',
+      'src/gadgets/render', 'src/gadgets/rewrite', 'src/gadgets/sample', 'src/gadgets/templates', 'src/social',
       'src/social/http', 'src/social/service', 'src/social/converters', 'src/social/opensocial',
       'src/social/spi', 'src/social/model', 'src/social/sample', 'src/social/oauth');
   $extension_class_paths = Config::get('extension_class_paths');

Modified: incubator/shindig/trunk/php/test/social/MediaItemRestTest.php
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/php/test/social/MediaItemRestTest.php?rev=800295&r1=800294&r2=800295&view=diff
==============================================================================
--- incubator/shindig/trunk/php/test/social/MediaItemRestTest.php (original)
+++ incubator/shindig/trunk/php/test/social/MediaItemRestTest.php Mon Aug  3 10:55:41 2009
@@ -91,7 +91,7 @@
     $this->verifyLifeCycle($postData, 'application/json');
   }
   
-  public function xxtestLifeCycleInXml() {
+  public function testLifeCycleInXml() {
     $postData = '<?xml version="1.0" encoding="UTF-8"?>
                  <mediaItem xmlns="http://ns.opensocial.org/2008/opensocial">
                    <id>11223344</id>
@@ -104,7 +104,7 @@
     $this->verifyLifeCycle($postData, 'application/xml');
   }
   
-  public function xxtestLifeCycleInAtom() {
+  public function testLifeCycleInAtom() {
     $postData = '<entry xmlns="http://www.w3.org/2005/Atom">
                    <content type="application/xml">
                      <mediaItem xmlns="http://ns.opensocial.org/2008/opensocial">