     1: <?php
     2: /**
     3:  * Copyright 2012-2014 Rackspace US, Inc.
     4:  *
     5:  * Licensed under the Apache License, Version 2.0 (the "License");
     6:  * you may not use this file except in compliance with the License.
     7:  * You may obtain a copy of the License at
     8:  *
     9:  * http://www.apache.org/licenses/LICENSE-2.0
    10:  *
    11:  * Unless required by applicable law or agreed to in writing, software
    12:  * distributed under the License is distributed on an "AS IS" BASIS,
    13:  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14:  * See the License for the specific language governing permissions and
    15:  * limitations under the License.
    16:  */
    17:
    18: namespace OpenCloud\Identity\Resource;
    19:
    20: use OpenCloud\Common\PersistentObject;
    21:
    22: /**
    23:  * Token class for token functionality.
    24:  *
    25:  * A token is an opaque string that represents an authorization to access cloud resources. Tokens may be revoked at any
    26:  * time and are valid for a finite duration.
    27:  *
    28:  * @package OpenCloud\Identity\Resource
    29:  */
    30: class Token extends PersistentObject
    31: {
    32:     /** @var string The token ID */
    33:     private $id;
    34:
    35:     /** @var string Timestamp of when this token will expire */
    36:     private $expires;
    37:
    38:     protected static $url_resource = 'tokens';
    39:
    40:     /**
    41:      * @param $id Sets the ID
    42:      */
    43:     public function setId($id)
    44:     {
    45:         $this->id = $id;
    46:     }
    47:
    48:     /**
    49:      * @return string Returns the ID
    50:      */
    51:     public function getId()
    52:     {
    53:         return $this->id;
    54:     }
    55:
    56:     /**
    57:      * @param $expires Set the expiry timestamp
    58:      */
    59:     public function setExpires($expires)
    60:     {
    61:         $this->expires = $expires;
    62:     }
    63:
    64:     /**
    65:      * @return string Get the expiry timestamp
    66:      */
    67:     public function getExpires()
    68:     {
    69:         return $this->expires;
    70:     }
    71:
    72:     /**
    73:      * @return bool Check whether this token has expired (i.e. still valid or not)
    74:      */
    75:     public function hasExpired()
    76:     {
    77:         return time() >= strtotime($this->expires);
    78:     }
    79: }
    80: