| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | <?phpnamespace Aws\Signature;use Aws\Credentials\Credentials;use Aws\Credentials\CredentialsInterface;use Psr\Http\Message\RequestInterface;class S3ExpressSignature extends S3SignatureV4{    public function signRequest(        RequestInterface $request,        CredentialsInterface $credentials,        $signingService = 's3express'    ) {        $request = $this->modifyTokenHeaders($request, $credentials);        $credentials = $this->getSigningCredentials($credentials);        return parent::signRequest($request, $credentials, $signingService);    }    public function presign(RequestInterface $request, CredentialsInterface $credentials, $expires, array $options = [])    {        $request = $this->modifyTokenHeaders($request, $credentials);        $credentials = $this->getSigningCredentials($credentials);        return parent::presign($request, $credentials, $expires, $options);    }    private function modifyTokenHeaders(        RequestInterface $request,        CredentialsInterface $credentials    ) {        //The x-amz-security-token header is not supported by s3 express        $request = $request->withoutHeader('X-Amz-Security-Token');        return $request->withHeader(            'x-amz-s3session-token',            $credentials->getSecurityToken()        );    }    private function getSigningCredentials(CredentialsInterface $credentials)    {        return new Credentials(            $credentials->getAccessKeyId(),            $credentials->getSecretKey()        );    }}
 |