public static function populateObjectMetadata(&$headers, $options) { if (isset($options[OSSOptions::CONTENT_DISPOSITION])) { $headers[OSSHeaders::CONTENT_DISPOSITION] = $options[OSSOptions::CONTENT_DISPOSITION]; } if (isset($options[OSSOptions::CACHE_CONTROL])) { $headers[OSSHeaders::CACHE_CONTROL] = $options[OSSOptions::CACHE_CONTROL]; } if (isset($options[OSSOptions::CONTENT_ENCODING])) { $headers[OSSHeaders::CONTENT_ENCODING] = $options[OSSOptions::CONTENT_ENCODING]; } if (isset($options[OSSOptions::CONTENT_TYPE])) { $headers[OSSHeaders::CONTENT_TYPE] = $options[OSSOptions::CONTENT_TYPE]; } if (isset($options[OSSOptions::EXPIRES])) { $headers[OSSHeaders::EXPIRES] = DateUtils::formatDate($options[OSSOptions::EXPIRES]); } if (isset($options[OSSOptions::USER_METADATA])) { foreach ($options[OSSOptions::USER_METADATA] as $key => $value) { $headers[OSSHeaders::OSS_USER_META_PREFIX . strtolower($key)] = $value; } } }
protected function getRequest($options) { if ($options[OSSOptions::META_ONLY] === true) { unset($options[OSSOptions::RANGE]); unset($options[OSSOptions::SAVE_AS]); unset($options[OSSOptions::RESPONSE_CONTENT_LANGUAGE]); unset($options[OSSOptions::RESPONSE_CONTENT_DISPOSITION]); unset($options[OSSOptions::RESPONSE_CACHE_CONTROL]); unset($options[OSSOptions::RESPONSE_CONTENT_TYPE]); unset($options[OSSOptions::RESPONSE_CONTENT_ENDCODING]); unset($options[OSSOptions::RESPONSE_EXPIRES]); } $builder = OSSRequestBuilder::factory(); if (isset($options[OSSOptions::RANGE])) { $range = $options[OSSOptions::RANGE]; $rangeValue = 'bytes='; if ($range[0] == -1) { $rangeValue .= '-' . $range[1]; } else { if ($range[1] == -1) { $rangeValue .= $range[0] . '-'; } else { $rangeValue .= $range[0] . '-' . $range[1]; } } $builder->addHeader(OSSHeaders::RANGE, $rangeValue); } if (isset($options[OSSOptions::MODIFIED_SINCE_CONSTRAINT])) { $builder->addHeader(OSSHeaders::GET_OBJECT_IF_MODIFIED_SINCE, DateUtils::formatDate($options[OSSOptions::MODIFIED_SINCE_CONSTRAINT])); } if (isset($options[OSSOptions::UNMODIFIED_SINCE_CONSTRAINT])) { $builder->addHeader(OSSHeaders::GET_OBJECT_IF_UNMODIFIED_SINCE, DateUtils::formatDate($options[OSSOptions::UNMODIFIED_SINCE_CONSTRAINT])); } if (isset($options[OSSOptions::MATCHING_ETAG_CONSTRAINTS])) { $constraints = $options[OSSOptions::MATCHING_ETAG_CONSTRAINTS]; $builder->addHeader(OSSHeaders::GET_OBJECT_IF_MATCH, join(', ', $constraints)); } if (isset($options[OSSOptions::NO_MATCHING_ETAG_CONSTRAINTS])) { $constraints = $options[OSSOptions::NO_MATCHING_ETAG_CONSTRAINTS]; $builder->addHeader(OSSHeaders::GET_OBJECT_IF_NONE_MATCH, join(', ', $constraints)); } if (isset($options[OSSOptions::SAVE_AS])) { $builder->setResponseBody($options[OSSOptions::SAVE_AS]); } return $builder->setEndpoint($options[OSSOptions::ENDPOINT])->setBucket($options[OSSOptions::BUCKET])->setKey($options[OSSOptions::KEY])->setMethod($options[OSSOptions::META_ONLY] ? HttpMethods::HEAD : HttpMethods::GET)->addOverrides($options)->build(); }
public function build() { AssertUtils::assertString($this->endpoint, 'endpoint'); // sent request $request = new HttpRequest(); $request->setEndpoint(OSSUtils::buildEndpoint($this->endpoint, $this->bucket)); if (isset($this->method)) { $request->setMethod($this->method); } $headers = $this->headers; // Date if (!isset($headers[OSSHeaders::DATE])) { $headers[OSSHeaders::DATE] = DateUtils::formatDate(new \DateTime()); } // Content-Type if (!isset($headers[OSSHeaders::CONTENT_TYPE])) { $headers[OSSHeaders::CONTENT_TYPE] = ''; } if (!isset($headers[OSSHeaders::CONTENT_LENGTH]) && is_string($this->content)) { $headers[OSSHeaders::CONTENT_LENGTH] = (string) strlen($this->content); } foreach ($headers as $key => $value) { $request->addHeader($key, $value); } $parameters = $this->parameters; foreach ($parameters as $key => $value) { $request->addParameter($key, $value); } $request->setResourcePath(OSSUtils::buildResourcePath($this->key)); $request->setContent($this->content); $request->setResponseBody($this->responseBody); return $request; }