Exemplo n.º 1
0
 /**
  * Delete objects in batch
  *
  * @param array $objects Array of LeanObjects to destroy
  */
 public static function destroyAll($objects)
 {
     $batch = array();
     foreach ($objects as $obj) {
         if (!$obj->getObjectId()) {
             throw new \RuntimeException("Cannot destroy 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" => "DELETE");
         $objects[] = $obj;
     }
     $sessionToken = LeanUser::getCurrentSessionToken();
     $response = LeanClient::batch($requests, $sessionToken);
     $errors = array();
     foreach ($objects as $i => $obj) {
         if (isset($response[$i]["error"])) {
             $errors[] = array("request" => $requests[$i], "error" => $response[$i]["error"]);
         }
     }
     if (count($errors) > 0) {
         throw new CloudException("Batch requests error: " . json_encode($errors));
     }
 }
Exemplo n.º 2
0
 public function testCircularGetCurrentUser()
 {
     // ensure getCurrentUser neither run indefinetely, nor throw maximum
     // function all error
     $avatar = LeanFile::createWithUrl("alice.png", "https://leancloud.cn/favicon.png");
     $user = LeanUser::logIn("alice", "blabla");
     $user->set("avatar", $avatar);
     $user->save();
     $token = LeanUser::getCurrentSessionToken();
     $user->logOut();
     LeanUser::setCurrentSessionToken($token);
     $user2 = LeanUser::getCurrentUser();
     $this->assertEquals($user2->getUsername(), "alice");
 }
Exemplo n.º 3
0
 /**
  * Build authentication headers
  *
  * @param string $sessionToken Session token of a LeanUser
  * @param bool   $useMasterKey
  * @return array
  */
 public static function buildHeaders($sessionToken, $useMasterKey)
 {
     if (is_null($useMasterKey)) {
         $useMasterKey = self::$useMasterKey;
     }
     $h = self::$defaultHeaders;
     $h['X-LC-Prod'] = self::$useProduction ? 1 : 0;
     $timestamp = time();
     $key = $useMasterKey ? self::$appMasterKey : self::$appKey;
     $sign = md5($timestamp . $key);
     $h['X-LC-Sign'] = $sign . "," . $timestamp;
     if ($useMasterKey) {
         $h['X-LC-Sign'] .= ",master";
     }
     if (!$sessionToken) {
         $sessionToken = LeanUser::getCurrentSessionToken();
     }
     if ($sessionToken) {
         $h['X-LC-Session'] = $sessionToken;
     }
     return $h;
 }