| @@ -2,8 +2,10 @@ | ||
| 2 | 2 | |
| 3 | 3 | namespace Dudlewebs\WPMCS\s3\Aws\Auth; |
| 4 | 4 | |
| 5 | 5 | use Dudlewebs\WPMCS\s3\Aws\Auth\Exception\UnresolvedAuthSchemeException; |
| 6 | +use Dudlewebs\WPMCS\s3\Aws\Exception\CredentialsException; | |
| 7 | +use Dudlewebs\WPMCS\s3\Aws\Exception\TokenException; | |
| 6 | 8 | use Dudlewebs\WPMCS\s3\Aws\Identity\AwsCredentialIdentity; |
| 7 | 9 | use Dudlewebs\WPMCS\s3\Aws\Identity\BearerTokenIdentity; |
| 8 | 10 | use Dudlewebs\WPMCS\s3\GuzzleHttp\Promise\PromiseInterface; |
| 9 | 11 | /** |
| @@ -24,9 +26,9 @@ | ||
| 24 | 26 | */ |
| 25 | 27 | private $authSchemeMap; |
| 26 | 28 | private $tokenProvider; |
| 27 | 29 | private $credentialProvider; |
| 28 | - public function __construct(callable $credentialProvider, callable $tokenProvider = null, array $authSchemeMap = []) | |
| 30 | + public function __construct(callable $credentialProvider, ?callable $tokenProvider = null, array $authSchemeMap = []) | |
| 29 | 31 | { |
| 30 | 32 | $this->credentialProvider = $credentialProvider; |
| 31 | 33 | $this->tokenProvider = $tokenProvider; |
| 32 | 34 | $this->authSchemeMap = empty($authSchemeMap) ? self::$defaultAuthSchemeMap : $authSchemeMap; |
| @@ -111,9 +113,14 @@ | ||
| 111 | 113 | { |
| 112 | 114 | $fn = $this->credentialProvider; |
| 113 | 115 | $result = $fn(); |
| 114 | 116 | if ($result instanceof PromiseInterface) { |
| 115 | - return $result->wait() instanceof AwsCredentialIdentity; | |
| 117 | + try { | |
| 118 | + $resolved = $result->wait(); | |
| 119 | + return $resolved instanceof AwsCredentialIdentity; | |
| 120 | + } catch (CredentialsException $e) { | |
| 121 | + return \false; | |
| 122 | + } | |
| 116 | 123 | } |
| 117 | 124 | return $result instanceof AwsCredentialIdentity; |
| 118 | 125 | } |
| 119 | 126 | /** |
| @@ -124,9 +131,14 @@ | ||
| 124 | 131 | if ($this->tokenProvider) { |
| 125 | 132 | $fn = $this->tokenProvider; |
| 126 | 133 | $result = $fn(); |
| 127 | 134 | if ($result instanceof PromiseInterface) { |
| 128 | - return $result->wait() instanceof BearerTokenIdentity; | |
| 135 | + try { | |
| 136 | + $resolved = $result->wait(); | |
| 137 | + return $resolved instanceof BearerTokenIdentity; | |
| 138 | + } catch (TokenException $e) { | |
| 139 | + return \false; | |
| 140 | + } | |
| 129 | 141 | } |
| 130 | 142 | return $result instanceof BearerTokenIdentity; |
| 131 | 143 | } |
| 132 | 144 | return \false; |