| @@ -2,8 +2,9 @@ | ||
| 2 | 2 | |
| 3 | 3 | namespace Dudlewebs\WPMCS\s3\Aws\Signature; |
| 4 | 4 | |
| 5 | 5 | use Dudlewebs\WPMCS\s3\Aws\Exception\UnresolvedSignatureException; |
| 6 | +use Dudlewebs\WPMCS\s3\Aws\Token\BearerTokenAuthorization; | |
| 6 | 7 | /** |
| 7 | 8 | * Signature providers. |
| 8 | 9 | * |
| 9 | 10 | * A signature provider is a function that accepts a version, service, and |
| @@ -39,9 +40,9 @@ | ||
| 39 | 40 | * $nullValue = $c('???', 'abc', '123'); // Neither can handle this. |
| 40 | 41 | */ |
| 41 | 42 | class SignatureProvider |
| 42 | 43 | { |
| 43 | - private static $s3v4SignedServices = ['s3' => \true, 's3control' => \true, 's3-object-lambda' => \true]; | |
| 44 | + private static $s3v4SignedServices = ['s3' => \true, 's3control' => \true, 's3-outposts' => \true, 's3-object-lambda' => \true, 's3express' => \true]; | |
| 44 | 45 | /** |
| 45 | 46 | * Resolves and signature provider and ensures a non-null return value. |
| 46 | 47 | * |
| 47 | 48 | * @param callable $provider Provider function to invoke. |
| @@ -54,9 +55,9 @@ | ||
| 54 | 55 | */ |
| 55 | 56 | public static function resolve(callable $provider, $version, $service, $region) |
| 56 | 57 | { |
| 57 | 58 | $result = $provider($version, $service, $region); |
| 58 | - if ($result instanceof SignatureInterface) { | |
| 59 | + if ($result instanceof SignatureInterface || $result instanceof BearerTokenAuthorization) { | |
| 59 | 60 | return $result; |
| 60 | 61 | } |
| 61 | 62 | throw new UnresolvedSignatureException("Unable to resolve a signature for {$version}/{$service}/{$region}.\n" . "Valid signature versions include v4 and anonymous."); |
| 62 | 63 | } |
| @@ -102,15 +103,19 @@ | ||
| 102 | 103 | public static function version() |
| 103 | 104 | { |
| 104 | 105 | return function ($version, $service, $region) { |
| 105 | 106 | switch ($version) { |
| 107 | + case 'v4-s3express': | |
| 108 | + return new S3ExpressSignature($service, $region); | |
| 106 | 109 | case 's3v4': |
| 107 | 110 | case 'v4': |
| 108 | 111 | return !empty(self::$s3v4SignedServices[$service]) ? new S3SignatureV4($service, $region) : new SignatureV4($service, $region); |
| 109 | 112 | case 'v4a': |
| 110 | - return new SignatureV4($service, $region, ['use_v4a' => \true]); | |
| 113 | + return !empty(self::$s3v4SignedServices[$service]) ? new S3SignatureV4($service, $region, ['use_v4a' => \true]) : new SignatureV4($service, $region, ['use_v4a' => \true]); | |
| 111 | 114 | case 'v4-unsigned-body': |
| 112 | 115 | return !empty(self::$s3v4SignedServices[$service]) ? new S3SignatureV4($service, $region, ['unsigned-body' => 'true']) : new SignatureV4($service, $region, ['unsigned-body' => 'true']); |
| 116 | + case 'bearer': | |
| 117 | + return new BearerTokenAuthorization(); | |
| 113 | 118 | case 'anonymous': |
| 114 | 119 | return new AnonymousSignature(); |
| 115 | 120 | default: |
| 116 | 121 | return null; |