Akamai {OPEN} EdgeGrid Authentication for PHP
  • Namespace
  • Class
  • Tree

Namespaces

  • Akamai
    • Open
      • EdgeGrid
        • Authentication
          • Exception
            • SignerException
        • Exception
          • HandlerException
        • Handler

Classes

  • Akamai\Open\EdgeGrid\Authentication
  • Akamai\Open\EdgeGrid\Authentication\Nonce
  • Akamai\Open\EdgeGrid\Authentication\Timestamp
  • Akamai\Open\EdgeGrid\Cli
  • Akamai\Open\EdgeGrid\Client
  • Akamai\Open\EdgeGrid\Handler\Authentication
  • Akamai\Open\EdgeGrid\Handler\Debug
  • Akamai\Open\EdgeGrid\Handler\Verbose

Exceptions

  • Akamai\Open\EdgeGrid\Authentication\Exception
  • Akamai\Open\EdgeGrid\Authentication\Exception\ConfigException
  • Akamai\Open\EdgeGrid\Authentication\Exception\SignerException
  • Akamai\Open\EdgeGrid\Authentication\Exception\SignerException\InvalidSignDataException
  • Akamai\Open\EdgeGrid\Exception
  • Akamai\Open\EdgeGrid\Exception\HandlerException
  • Akamai\Open\EdgeGrid\Exception\HandlerException\IOException
 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 
<?php
/**
 * Akamai {OPEN} EdgeGrid Auth for PHP
 *
 * @author Davey Shafik <dshafik@akamai.com>
 * @copyright Copyright 2016 Akamai Technologies, Inc. All rights reserved.
 * @license Apache 2.0
 * @link https://github.com/akamai-open/AkamaiOPEN-edgegrid-php
 * @link https://developer.akamai.com
 * @link https://developer.akamai.com/introduction/Client_Auth.html
 */
namespace Akamai\Open\EdgeGrid\Authentication;

/**
 * Generates an Akamai formatted Date for each request
 *
 * @package Akamai\Open\EdgeGrid\Authentication
 */
class Timestamp
{
    const FORMAT = 'Ymd\TH:i:sO';

    /**
     * @var \DateTime Signing Timestamp
     */
    protected $timestamp;

    /**
     * @var string \DateInterval spec
     */
    protected $validFor = 'PT10S';

    /**
     * Signing Timestamp
     */
    public function __construct()
    {
        $this->timestamp = new \DateTime('now', new \DateTimeZone('UTC'));
    }

    /**
     * Return true is timestamp is less than 10s old
     *
     * @return bool
     */
    public function isValid()
    {
        $now = new \DateTime('now', new \DateTimeZone('UTC'));
        $timestamp = clone $this->timestamp;

        return $timestamp->add(new \DateInterval($this->validFor)) >= $now;
    }

    /**
     * Set how long the current timestamp is considered valid
     *
     * @see \DateInterval
     * @param string $interval A \DateInterval time spec
     * @return $this
     */
    public function setValidFor($interval)
    {
        $this->validFor = $interval;
        return $this;
    }

    /**
     * Return the timestamp when cast to string
     *
     * @return string Returns the date
     */
    public function __toString()
    {
        return $this->timestamp->format(static::FORMAT);
    }
}
Akamai {OPEN} EdgeGrid Authentication for PHP API documentation generated by ApiGen