Ejemplo n.º 1
0
 /**
  * 获取 bucket 中的 object 列表
  *
  * @param string $bucket Bucket 名称
  * @param string $prefix Object 名称的前缀
  * @param string $marker Marker (返回 marker 之后的 object 列表,不包含 marker)
  * @param string $limit 最大返回的 Object 数目
  * @param string $delimiter 分隔符
  * @return array | false
  */
 public static function getBucket($bucket, $prefix = null, $marker = null, $limit = 1000, $delimiter = null, $keyword = null)
 {
     $result = array();
     do {
         $rest = new StorageRequest('GET', self::$__account, $bucket, '', self::$endpoint);
         $rest->setParameter('format', 'json');
         if ($prefix !== null && $prefix !== '') {
             $rest->setParameter('prefix', $prefix);
         }
         if ($marker !== null && $marker !== '') {
             $rest->setParameter('marker', $marker);
         }
         if ($delimiter !== null && $delimiter !== '') {
             $rest->setParameter('delimiter', $delimiter);
         }
         if ($keyword !== null && $keyword !== '') {
             $rest->setParameter('keyword', $keyword);
         } else {
             if (!empty(self::$defDelimiter)) {
                 $rest->setParameter('delimiter', self::$defDelimiter);
             }
         }
         if ($limit > 1000) {
             $max_keys = 1000;
         } else {
             $max_keys = $limit;
         }
         $rest->setParameter("limit", $max_keys);
         $limit -= 1000;
         $response = $rest->getResponse();
         if ($response->error === false && $response->code !== 200) {
             $response->error = array('code' => $response->code, 'message' => 'Unexpected HTTP status');
         }
         if ($response->error !== false) {
             self::__triggerError(sprintf("Storage::getBucket(): [%s] %s", $response->error['code'], $response->error['message']), __FILE__, __LINE__);
             return false;
         }
         $objects = json_decode($response->body, True);
         if ($objects === False) {
             self::__triggerError(sprintf("Storage::getBucket(): invalid body: %s", $response->body), __FILE__, __LINE__);
             return false;
         }
         if ($objects) {
             $result = array_merge($result, $objects);
             $marker = end($objects);
             $marker = $marker['name'];
         }
     } while ($objects && count($objects) == $max_keys && $limit > 0);
     return $result;
 }