View file File name : SchemaFormatter.php Content :<?php namespace Guzzle\Service\Description; use Guzzle\Common\Exception\InvalidArgumentException; /** * JSON Schema formatter class */ class SchemaFormatter { /** @var \DateTimeZone */ protected static $utcTimeZone; /** * Format a value by a registered format name * * @param string $format Registered format used to format the value * @param mixed $value Value being formatted * * @return mixed */ public static function format($format, $value) { switch ($format) { case 'date-time': return self::formatDateTime($value); case 'date-time-http': return self::formatDateTimeHttp($value); case 'date': return self::formatDate($value); case 'time': return self::formatTime($value); case 'timestamp': return self::formatTimestamp($value); case 'boolean-string': return self::formatBooleanAsString($value); default: return $value; } } /** * Create a ISO 8601 (YYYY-MM-DDThh:mm:ssZ) formatted date time value in UTC time * * @param string|integer|\DateTime $value Date time value * * @return string */ public static function formatDateTime($value) { return self::dateFormatter($value, 'Y-m-d\TH:i:s\Z'); } /** * Create an HTTP date (RFC 1123 / RFC 822) formatted UTC date-time string * * @param string|integer|\DateTime $value Date time value * * @return string */ public static function formatDateTimeHttp($value) { return self::dateFormatter($value, 'D, d M Y H:i:s \G\M\T'); } /** * Create a YYYY-MM-DD formatted string * * @param string|integer|\DateTime $value Date time value * * @return string */ public static function formatDate($value) { return self::dateFormatter($value, 'Y-m-d'); } /** * Create a hh:mm:ss formatted string * * @param string|integer|\DateTime $value Date time value * * @return string */ public static function formatTime($value) { return self::dateFormatter($value, 'H:i:s'); } /** * Formats a boolean value as a string * * @param string|integer|bool $value Value to convert to a boolean 'true' / 'false' value * * @return string */ public static function formatBooleanAsString($value) { return filter_var($value, FILTER_VALIDATE_BOOLEAN) ? 'true' : 'false'; } /** * Return a UNIX timestamp in the UTC timezone * * @param string|integer|\DateTime $value Time value * * @return int */ public static function formatTimestamp($value) { return (int) self::dateFormatter($value, 'U'); } /** * Get a UTC DateTimeZone object * * @return \DateTimeZone */ protected static function getUtcTimeZone() { // @codeCoverageIgnoreStart if (!self::$utcTimeZone) { self::$utcTimeZone = new \DateTimeZone('UTC'); } // @codeCoverageIgnoreEnd return self::$utcTimeZone; } /** * Perform the actual DateTime formatting * * @param int|string|\DateTime $dateTime Date time value * @param string $format Format of the result * * @return string * @throws InvalidArgumentException */ protected static function dateFormatter($dateTime, $format) { if (is_numeric($dateTime)) { return gmdate($format, (int) $dateTime); } if (is_string($dateTime)) { $dateTime = new \DateTime($dateTime); } if ($dateTime instanceof \DateTime) { return $dateTime->setTimezone(self::getUtcTimeZone())->format($format); } throw new InvalidArgumentException('Date/Time values must be either a string, integer, or DateTime object'); } }