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