Exemplo n.º 1
0
 /**
  * Issue a batch request
  *
  * @param array  $requests     Array of requests in batch op
  * @param string $sessionToken Session token of a User
  * @param array  $headers      Optional headers
  * @param bool   $useMasterkey Use master key or not, optional
  * @return array              JSON decoded associated array
  * @see self::request()
  */
 public static function batch($requests, $sessionToken = null, $headers = array(), $useMasterKey = null)
 {
     $response = Client::post("/batch", array("requests" => $requests), $sessionToken, $headers, $useMasterKey);
     $batchRequestError = new BatchRequestError();
     foreach ($requests as $i => $req) {
         if (isset($response[$i]["error"])) {
             $batchRequestError->add($req, $response[$i]["error"]);
         }
     }
     if (!$batchRequestError->isEmpty()) {
         throw $batchRequestError;
     }
     return $response;
 }
Exemplo n.º 2
0
 /**
  * Fetch objects from server
  *
  * @param array $objects Objects to fetch.
  * @throws RuntimeException, CloudException
  */
 public function fetchAll($objects)
 {
     $batch = array();
     foreach ($objects as $obj) {
         if (!$obj->getObjectId()) {
             throw new \RuntimeException("Cannot fetch object without ID.");
         }
         // remove duplicate objects by id
         $batch[$obj->getObjectId()] = $obj;
     }
     if (empty($batch)) {
         return;
     }
     $requests = array();
     $objects = array();
     foreach ($batch as $obj) {
         $requests[] = array("path" => "/1.1/classes/{$obj->getClassName()}" . "/{$obj->getObjectId()}", "method" => "GET");
         $objects[] = $obj;
     }
     $sessionToken = User::getCurrentSessionToken();
     $response = Client::batch($requests, $sessionToken);
     $batchRequestError = new BatchRequestError();
     foreach ($objects as $i => $obj) {
         if (isset($response[$i]["success"])) {
             if (!empty($response[$i]["success"])) {
                 $obj->mergeAfterFetch($response[$i]["success"]);
             } else {
                 $batchRequestError->add($requests[$i], array("error" => "Object not found."));
             }
         }
     }
     if (!$batchRequestError->isEmpty()) {
         throw $batchRequestError;
     }
 }