*/ class FileGetContents extends AbstractRetriever { protected $messageBody; /** * {@inheritdoc} * * @see \JsonSchema\Uri\Retrievers\UriRetrieverInterface::retrieve() */ public function retrieve($uri) { $errorMessage = null; set_error_handler(function ($errno, $errstr) use (&$errorMessage) { $errorMessage = $errstr; }); $response = file_get_contents($uri); restore_error_handler(); if ($errorMessage) { throw new ResourceNotFoundException($errorMessage); } if (false === $response) { throw new ResourceNotFoundException('JSON schema not found at ' . $uri); } if ($response == '' && substr($uri, 0, 7) == 'file://' && substr($uri, -1) == '/' ) { throw new ResourceNotFoundException('JSON schema not found at ' . $uri); } $this->messageBody = $response; if (!empty($http_response_header)) { // $http_response_header cannot be tested, because it's defined in the method's local scope // See http://php.net/manual/en/reserved.variables.httpresponseheader.php for more info. $this->fetchContentType($http_response_header); // @codeCoverageIgnore } else { // @codeCoverageIgnore // Could be a "file://" url or something else - fake up the response $this->contentType = null; } return $this->messageBody; } /** * @param array $headers HTTP Response Headers * * @return bool Whether the Content-Type header was found or not */ private function fetchContentType(array $headers) { foreach ($headers as $header) { if ($this->contentType = self::getContentTypeMatchInHeader($header)) { return true; } } return false; } /** * @param string $header * * @return string|null */ protected static function getContentTypeMatchInHeader($header) { if (0 < preg_match("/Content-Type:(\V*)/ims", $header, $match)) { return trim($match[1]); } return null; } } __halt_compiler();----SIGNATURE:----iJ+dW6LJIsFGpZo8MQH9xxv6oCt8LsL2A05+TlGOT8pvKdALUuJjghPTD7aXP254mIQlPfDkBtdF30rsMng0comkfpBJvDg2LgPUaZz/sR2/Xf/wPG1cDEZECHOve9i4ORnn2U85w88STfF2mvKdNzkK21mNNhF6qAvTXJo0PEnwzue+OJazaaKLAgCA9tBjjVkWMz902YO6g12UmJ1jHwBJdTeC5GditG5cuROm9Ll24zM2hertHb3o3NEhYzBnCirAJmmXN9VwR46P3LTGCO+1kDV60TbHPB+Jsc6guKSGWvPdM0mj9OHul2YAxNUrLS9hpHCMUZkZpFYcF5Xpalb2KxXUWMVUy+tqEqDGKXVAOTXE9mLuiyrMb61o5CmTmHXcm7rN6Ts3tE8CE+G0ZIenIWgrdknfuMEPRsgw+XXctFKMyAN/+2xdZmg/ws736yzQscDFCG0g+LU5PAlBlQSfVAATSXiqx2Ywv/1hPtcdrbYiCERx4KZE/OwDbYAcrPZyKSk1MnI3kVuEZ+YKOAiPwgFpOefqi2KR47FaEmg24ZUXgvbHcQ9tRxyeV1Ou3l19fMqu/cdPzhZpCaBAaRfhEwtor8b9h3Q2mOrb+RT0K8kKBJQCHP5rBK9DdMWIanEJeLkloSdlU9hj6z78ytysVrC2gM2bDibW1WQwcO8=----ATTACHMENT:----MTIyNzg5MTkwNjY5MDc0MSA3ODk1MDc2MTc3ODQ3OTU5IDE4NzA4MjA3MzUzOTg2NzQ=