Example #1
0
 /**
  * Fetch file object by id
  *
  * Note it fetches descriptive data from LeanCloud, but not file content.
  * The content should be fetched from file URL.
  *
  * @return File
  */
 public static function fetch($objectId)
 {
     $file = new File("");
     $resp = Client::get("/files/{$objectId}");
     $file->mergeAfterFetch($resp);
     return $file;
 }
Example #2
0
 /**
  * Decode value from LeanCloud response.
  *
  * @param mixed  $value Value to decode
  * @param string $key   Field key for the value
  * @return mixed
  */
 public static function decode($value, $key)
 {
     if (!is_array($value)) {
         return $value;
     }
     if ($key === 'ACL') {
         return new ACL($value);
     }
     if (!isset($value["__type"])) {
         $out = array();
         foreach ($value as $k => $v) {
             $out[$k] = self::decode($v, $k);
         }
         return $out;
     }
     // Parse different data type from server.
     $type = $value["__type"];
     if ($type === "Date") {
         // return time in default time zone
         return new \DateTime($value["iso"]);
     }
     if ($type === "Bytes") {
         return Bytes::createFromBase64Data($value["base64"]);
     }
     if ($type === "GeoPoint") {
         return new GeoPoint($value["latitude"], $value["longitude"]);
     }
     if ($type === "File") {
         $file = new File($value["name"]);
         $file->mergeAfterFetch($value);
         return $file;
     }
     if ($type === "Pointer" || $type === "Object") {
         $obj = Object::create($value["className"], $value["objectId"]);
         unset($value["__type"]);
         unset($value["className"]);
         if (!empty($value)) {
             $obj->mergeAfterFetch($value);
         }
         return $obj;
     }
     if ($type === "Relation") {
         return new Relation(null, $key, $value["className"]);
     }
 }
Example #3
0
 public function testSaveObjectWithFile()
 {
     $obj = new Object("TestObject");
     $obj->set("name", "alice");
     $file = File::createWithData("test.txt", "你好,中国!");
     $obj->addIn("files", $file);
     $obj->save();
     $this->assertNotEmpty($obj->getObjectId());
     $this->assertNotEmpty($file->getObjectId());
     $this->assertNotEmpty($file->getUrl());
     $file->destroy();
     $obj->destroy();
 }
Example #4
0
 public function testCircularGetCurrentUser()
 {
     // ensure getCurrentUser neither run indefinetely, nor throw maximum
     // function call error
     $avatar = File::createWithUrl("alice.png", "https://leancloud.cn/favicon.png");
     $user = User::logIn("alice", "blabla");
     $user->set("avatar", $avatar);
     $user->save();
     $token = User::getCurrentSessionToken();
     $user->logOut();
     User::setCurrentSessionToken($token);
     $user2 = User::getCurrentUser();
     $this->assertEquals($user2->getUsername(), "alice");
 }