Пример #1
0
 /**
  * Get missing fields.
  *
  * Not all containers come fully instantiated. This method is sometimes
  * called to "fill in" missing fields.
  *
  * @return \OpenStack\ObjectStore\v1\Resource\Container
  */
 protected function loadExtraData()
 {
     // If URL and token are empty, we are dealing with a local item that
     // has not been saved, and was not created with Container::createContainer().
     // We treat this as an error condition.
     if (empty($this->url) || empty($this->token)) {
         throw new Exception('Remote data cannot be fetched. A Token and endpoint URL are required.');
     }
     // Do a GET on $url to fetch headers.
     $headers = ['X-Auth-Token' => $this->token];
     $response = $this->client->get($this->url, ['headers' => $headers]);
     $headers = self::reformatHeaders($response->getHeaders());
     // Get ACL.
     $this->acl = ACL::newFromHeaders($headers);
     // Update size and count.
     $this->bytes = $response->getHeader('X-Container-Bytes-Used', 0);
     $this->count = $response->getHeader('X-Container-Object-Count', 0);
     // Get metadata.
     $prefix = Container::CONTAINER_METADATA_HEADER_PREFIX;
     $this->setMetadata(Container::extractHeaderAttributes($headers, $prefix));
     return $this;
 }
Пример #2
0
 /**
  * Extract information from HTTP headers.
  *
  * This is used internally to set object properties from headers.
  *
  * @return \OpenStack\ObjectStore\v1\Resource\RemoteObject $this for the current object so it
  *                                                         can be used in chaining methods.
  */
 protected function extractFromHeaders($response)
 {
     $this->setContentType($response->getHeader('Content-Type') ? $response->getHeader('Content-Type') : $this->contentType());
     $this->lastModified = strtotime($response->getHeader('Last-Modified') ? $response->getHeader('Last-Modified') : 0);
     $this->etag = $response->getHeader('Etag') ? $response->getHeader('Etag') : $this->etag;
     $this->contentLength = (int) ($response->getHeader('Content-Length') ? $response->getHeader('Content-Length') : 0);
     $this->setDisposition($response->getHeader('Content-Disposition', null));
     $this->setEncoding($response->getHeader('Content-Encoding', null));
     // Reset the metadata, too:
     $headers = [];
     foreach ($response->getHeaders() as $name => $header) {
         $headers[$name] = $header[0];
     }
     $this->setMetadata(Container::extractHeaderAttributes($headers));
     return $this;
 }