| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | <?phpnamespace Aws\S3\Crypto;use Aws\Crypto\MaterialsProvider;use Aws\Crypto\MetadataEnvelope;use Aws\Crypto\MetadataStrategyInterface;trait CryptoParamsTrait{    protected function getMaterialsProvider(array $args)    {        if ($args['@MaterialsProvider'] instanceof MaterialsProvider) {            return $args['@MaterialsProvider'];        }        throw new \InvalidArgumentException('An instance of MaterialsProvider'            . ' must be passed in the "MaterialsProvider" field.');    }    protected function getInstructionFileSuffix(array $args)    {        return !empty($args['@InstructionFileSuffix'])            ? $args['@InstructionFileSuffix']            : $this->instructionFileSuffix;    }    protected function determineGetObjectStrategy(        $result,        $instructionFileSuffix    ) {        if (isset($result['Metadata'][MetadataEnvelope::CONTENT_KEY_V2_HEADER])) {            return new HeadersMetadataStrategy();        }        return new InstructionFileMetadataStrategy(            $this->client,            $instructionFileSuffix        );    }    protected function getMetadataStrategy(array $args, $instructionFileSuffix)    {        if (!empty($args['@MetadataStrategy'])) {            if ($args['@MetadataStrategy'] instanceof MetadataStrategyInterface) {                return $args['@MetadataStrategy'];            }            if (is_string($args['@MetadataStrategy'])) {                switch ($args['@MetadataStrategy']) {                    case HeadersMetadataStrategy::class:                        return new HeadersMetadataStrategy();                    case InstructionFileMetadataStrategy::class:                        return new InstructionFileMetadataStrategy(                            $this->client,                            $instructionFileSuffix                        );                    default:                        throw new \InvalidArgumentException('Could not match the'                            . ' specified string in "MetadataStrategy" to a'                            . ' predefined strategy.');                }            } else {                throw new \InvalidArgumentException('The metadata strategy that'                    . ' was passed to "MetadataStrategy" was unrecognized.');            }        } elseif ($instructionFileSuffix) {            return new InstructionFileMetadataStrategy(                $this->client,                $instructionFileSuffix            );        }        return null;    }}
 |