<?php 
namespace Aws\Api; 
 
/** 
 * Represents a timestamp shape. 
 */ 
class TimestampShape extends Shape 
{ 
    public function __construct(array $definition, ShapeMap $shapeMap) 
    { 
        $definition['type'] = 'timestamp'; 
        parent::__construct($definition, $shapeMap); 
    } 
 
    /** 
     * Formats a timestamp value for a service. 
     * 
     * @param mixed  $value  Value to format 
     * @param string $format Format used to serialize the value 
     * 
     * @return int|string 
     * @throws \UnexpectedValueException if the format is unknown. 
     * @throws \InvalidArgumentException if the value is an unsupported type. 
     */ 
    public static function format($value, $format) 
    { 
        if ($value instanceof \DateTime) { 
            $value = $value->getTimestamp(); 
        } elseif (is_string($value)) { 
            $value = strtotime($value); 
        } elseif (!is_int($value)) { 
            throw new \InvalidArgumentException('Unable to handle the provided' 
                . ' timestamp type: ' . gettype($value)); 
        } 
 
        switch ($format) { 
            case 'iso8601': 
                return gmdate('Y-m-d\TH:i:s\Z', $value); 
            case 'rfc822': 
                return gmdate('D, d M Y H:i:s \G\M\T', $value); 
            case 'unixTimestamp': 
                return $value; 
            default: 
                throw new \UnexpectedValueException('Unknown timestamp format: ' 
                    . $format); 
        } 
    } 
} 
 
 |