Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
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
}