public function sign(HttpRequest $request, array $credentials) { AssertUtils::assertSet(array(OSSOptions::ACCESS_KEY_ID, OSSOptions::ACCESS_KEY_SECRET), $credentials); AssertUtils::assertString($credentials[OSSOptions::ACCESS_KEY_ID], OSSOptions::ACCESS_KEY_ID); AssertUtils::assertString($credentials[OSSOptions::ACCESS_KEY_SECRET], OSSOptions::ACCESS_KEY_SECRET); $key = $credentials[OSSOptions::ACCESS_KEY_ID]; $secret = $credentials[OSSOptions::ACCESS_KEY_SECRET]; if (strlen($key) > 0 && strlen($secret) > 0) { $canonicalString = SignUtils::buildCanonicalString($request, $this->bucket, $this->key); $signature = ServiceSignature::factory()->computeSignature($secret, $canonicalString); $request->addHeader(OSSHeaders::AUTHORIZATION, 'OSS ' . $key . ':' . $signature); } else { if (strlen($key) > 0) { $request->addHeader(OSSHeaders::AUTHORIZATION, $key); } } }
public function addHeader($header, $value) { AssertUtils::assertString($header, 'HttpHeaderName'); AssertUtils::assertString($value, 'HttpHeaderValue'); $this->headers[$header] = $value; }
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; }
/** * 设置Bucket的名字 * * @internal * * @param string $name Bucket的名字 */ public function setName($name) { AssertUtils::assertString($name, 'name'); $this->name = $name; }
public function addParameter($key, $value) { AssertUtils::assertString($key, 'HttpParameterName'); if ($value !== null) { AssertUtils::assertString($value, 'HttpParameterValue'); } $this->parameters[$key] = $value; }