| 1 |
<?php |
| 2 |
|
| 3 |
namespace Dudlewebs\WPMCS\s3\Aws\Signature; |
| 4 |
|
| 5 |
use Dudlewebs\WPMCS\s3\Aws\Credentials\Credentials; |
| 6 |
use Dudlewebs\WPMCS\s3\Aws\Credentials\CredentialsInterface; |
| 7 |
use Dudlewebs\WPMCS\s3\Psr\Http\Message\RequestInterface; |
| 8 |
class S3ExpressSignature extends S3SignatureV4 |
| 9 |
{ |
| 10 |
public function signRequest(RequestInterface $request, CredentialsInterface $credentials, $signingService = 's3express') |
| 11 |
{ |
| 12 |
$request = $this->modifyTokenHeaders($request, $credentials); |
| 13 |
$credentials = $this->getSigningCredentials($credentials); |
| 14 |
return parent::signRequest($request, $credentials, $signingService); |
| 15 |
} |
| 16 |
public function presign(RequestInterface $request, CredentialsInterface $credentials, $expires, array $options = []) |
| 17 |
{ |
| 18 |
$request = $this->modifyTokenHeaders($request, $credentials); |
| 19 |
$credentials = $this->getSigningCredentials($credentials); |
| 20 |
return parent::presign($request, $credentials, $expires, $options); |
| 21 |
} |
| 22 |
private function modifyTokenHeaders(RequestInterface $request, CredentialsInterface $credentials) |
| 23 |
{ |
| 24 |
//The x-amz-security-token header is not supported by s3 express |
| 25 |
$request = $request->withoutHeader('X-Amz-Security-Token'); |
| 26 |
return $request->withHeader('x-amz-s3session-token', $credentials->getSecurityToken()); |
| 27 |
} |
| 28 |
private function getSigningCredentials(CredentialsInterface $credentials) |
| 29 |
{ |
| 30 |
return new Credentials($credentials->getAccessKeyId(), $credentials->getSecretKey()); |
| 31 |
} |
| 32 |
} |
| 33 |
|