public function parse(HttpResponse $response, $options) { $object = new OSSObject(); $object->setBucketName($options[OSSOptions::BUCKET]); $object->setKey($options[OSSOptions::KEY]); if (!$options[OSSOptions::META_ONLY]) { $object->setObjectContent($response->getContent()); } foreach ($response->getHeaders() as $key => $value) { if ($key == OSSHeaders::LAST_MODIFIED) { $object->addMetadata(OSSHeaders::LAST_MODIFIED, DateUtils::parseDate($value)); } else { if ($key == OSSHeaders::CONTENT_LENGTH) { $object->addMetadata(OSSHeaders::CONTENT_LENGTH, (int) $value); } else { if ($key == OSSHeaders::ETAG) { $object->addMetadata(OSSHeaders::ETAG, OSSUtils::trimQuotes($value)); } else { if (strpos($key, OSSHeaders::OSS_USER_META_PREFIX) === 0) { $key = substr($key, strlen(OSSHeaders::OSS_USER_META_PREFIX)); $object->addUserMetadata($key, $value); } else { $object->addMetadata($key, $value); } } } } } return $object; }
/** * Normalize a result from OSS. * * @param OSSObject $object * * @return array file metadata */ protected function normalizeObject(OSSObject $object) { $name = $object->getKey(); $name = $this->removePathPrefix($name); $mimetype = explode('; ', $object->getContentType()); return ['type' => 'file', 'dirname' => Util::dirname($name), 'path' => $name, 'timestamp' => $object->getLastModified()->getTimestamp(), 'mimetype' => reset($mimetype), 'size' => $object->getContentLength()]; }