Scalr\Service\Aws\S3\V20060301\S3Api::copyObject PHP Method

copyObject() public method

This implementation of the PUT operation creates a copy of an object that is already stored in Amazon S3. A PUT copy operation is the same as performing a GET and then a PUT
public copyObject ( string $scrBucketName, string $srcObject, string $destBucketName, string $destObject, array $requestHeaders = null, string $versionId = null ) : CopyObjectResponseData
$scrBucketName string Source bucket name.
$srcObject string Source object name.
$destBucketName string Destination bucket name.
$destObject string Destination object name.
$requestHeaders array optional Request headers array looks like array(header => value)
$versionId string optional Specifies source version id.
return Scalr\Service\Aws\S3\DataType\CopyObjectResponseData Returns CopyObjectResponseData
    public function copyObject($scrBucketName, $srcObject, $destBucketName, $destObject, array $requestHeaders = null, $versionId = null)
    {
        $result = null;
        $options = array('_subdomain' => (string) $destBucketName, 'x-amz-copy-source' => sprintf("/%s/%s" . ($versionId !== null ? "?versionId=%s" : ''), $scrBucketName, self::escapeObjectName($srcObject), self::escape($versionId)));
        $allowedHeaders = array('x-amz-metadata-directive', 'x-amz-copy-source-if-match', 'x-amz-copy-source-if-none-match', 'x-amz-copy-source-if-unmodified-since', 'x-amz-copy-source-if-modified-since', 'x-amz-server-side-encryption', 'x-amz-storage-class', 'x-amz-website-redirect-location');
        $allowedHeaders = array_merge($allowedHeaders, self::$xamzAclAllowedHeaders);
        if (!empty($requestHeaders)) {
            $requestHeaders = $this->getFilteredArray($allowedHeaders, $requestHeaders);
            $options = array_merge($options, $requestHeaders);
        }
        $response = $this->getClient()->call('PUT', $options, sprintf('/%s', self::escapeObjectName($destObject)));
        if ($response->getError() === false) {
            $sxml = simplexml_load_string($response->getRawContent());
            $result = new CopyObjectResponseData();
            $result->setS3($this->s3);
            $result->setBucketName((string) $destBucketName)->setObjectName((string) $destObject)->setHeaders($response->getHeaders())->setETag((string) $sxml->ETag)->setLastModified(new DateTime((string) $sxml->LastModified, new DateTimeZone('UTC')));
        }
        return $result;
    }