in src/Copier.php [289:336]
private static function overwirteMetadataProp(Models\InitiateMultipartUploadRequest &$imRequest, array &$context)
{
/**
* @var Models\CopyObjectRequest $request
* @var Models\CopyObjectResult $metaProp
*/
$request = $context['request'];
$metaProp = $context['meta_prop'];
$directive = $request->metadataDirective ?? '';
switch (strtolower($directive)) {
case '':
case 'copy':
if ($metaProp == null) {
throw new \InvalidArgumentException("request.metadataDirective is COPY, but meets nil metaProp for source");
}
$imRequest->cacheControl = null;
$imRequest->contentType = null;
$imRequest->contentDisposition = null;
$imRequest->contentEncoding = null;
$imRequest->expires = null;
$imRequest->metadata = null;
$imRequest->expires = null;
$imHeaders = [];
// copy meta form source
foreach ($metaProp->headers as $k => $v) {
$lk = strtolower($k);
if (strncmp($lk, 'x-oss-meta', 10) == 0) {
$imHeaders[$k] = $v;
} else if (in_array($lk, self::MetadataCopied)) {
$imHeaders[$k] = $v;
}
}
$imRequestRo = new \ReflectionObject($imRequest);
$pp = $imRequestRo->getProperty('headers');
$pp->setAccessible(true);
$pp->setValue($imRequest, $imHeaders);
break;
case 'replace':
// the metedata has been copied via the copyRequest function before
break;
default:
//unsupport Directive
throw new \InvalidArgumentException("Unsupport MetadataDirective, $directive");
}
}