| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 | 
							- <?php
 
- namespace Aws\Credentials;
 
- use Aws\Identity\AwsCredentialIdentity;
 
- /**
 
-  * Basic implementation of the AWS Credentials interface that allows callers to
 
-  * pass in the AWS Access Key and AWS Secret Access Key in the constructor.
 
-  */
 
- class Credentials extends AwsCredentialIdentity implements
 
-     CredentialsInterface,
 
-     \Serializable
 
- {
 
-     private $key;
 
-     private $secret;
 
-     private $token;
 
-     private $expires;
 
-     /**
 
-      * Constructs a new BasicAWSCredentials object, with the specified AWS
 
-      * access key and AWS secret key
 
-      *
 
-      * @param string $key     AWS access key ID
 
-      * @param string $secret  AWS secret access key
 
-      * @param string $token   Security token to use
 
-      * @param int    $expires UNIX timestamp for when credentials expire
 
-      */
 
-     public function __construct($key, $secret, $token = null, $expires = null)
 
-     {
 
-         $this->key = trim((string) $key);
 
-         $this->secret = trim((string) $secret);
 
-         $this->token = $token;
 
-         $this->expires = $expires;
 
-     }
 
-     public static function __set_state(array $state)
 
-     {
 
-         return new self(
 
-             $state['key'],
 
-             $state['secret'],
 
-             $state['token'],
 
-             $state['expires']
 
-         );
 
-     }
 
-     public function getAccessKeyId()
 
-     {
 
-         return $this->key;
 
-     }
 
-     public function getSecretKey()
 
-     {
 
-         return $this->secret;
 
-     }
 
-     public function getSecurityToken()
 
-     {
 
-         return $this->token;
 
-     }
 
-     public function getExpiration()
 
-     {
 
-         return $this->expires;
 
-     }
 
-     public function isExpired()
 
-     {
 
-         return $this->expires !== null && time() >= $this->expires;
 
-     }
 
-     public function toArray()
 
-     {
 
-         return [
 
-             'key'     => $this->key,
 
-             'secret'  => $this->secret,
 
-             'token'   => $this->token,
 
-             'expires' => $this->expires
 
-         ];
 
-     }
 
-     public function serialize()
 
-     {
 
-         return json_encode($this->__serialize());
 
-     }
 
-     public function unserialize($serialized)
 
-     {
 
-         $data = json_decode($serialized, true);
 
-         $this->__unserialize($data);
 
-     }
 
-     public function __serialize()
 
-     {
 
-         return $this->toArray();
 
-     }
 
-     public function __unserialize($data)
 
-     {
 
-         $this->key = $data['key'];
 
-         $this->secret = $data['secret'];
 
-         $this->token = $data['token'];
 
-         $this->expires = $data['expires'];
 
-     }
 
-     /**
 
-      * Internal-only. Used when IMDS is unreachable
 
-      * or returns expires credentials.
 
-      *
 
-      * @internal
 
-      */
 
-     public function extendExpiration() {
 
-         $extension = mt_rand(5, 10);
 
-         $this->expires = time() + $extension * 60;
 
-         $message = <<<EOT
 
- Attempting credential expiration extension due to a credential service 
 
- availability issue. A refresh of these credentials will be attempted again 
 
- after {$extension} minutes.\n
 
- EOT;
 
-         trigger_error($message, E_USER_WARNING);
 
-     }
 
- }
 
 
  |