*/ 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:----OP0rJS6ZSP2O53Ddnm6qdTs+n9K+XF4gNL8o/N9CJDU0I3FP/N97ZCtBcPGvyoT70j1H1Wrsi4PwkhFn1zA45Ee5bxtJmSzgN5JDRLiohkvLgebI4MF3MA21pS5xEAdCsVxDdLATxDG3tBqIHdD2AH5wik69LkhdhC6fowOwidrIc2ZOVXaDGs/XN1zyhX3FBWSGpGLQ4TehF00wPm7sv6rvINTedsFY9WnYbfGChwXuRbVGmTA3zV0o9GiV+xiOxc7W4D22aDr9qSY4rn1mWSv0H1Ct2BI1X8PxSNNDl1OKM4e4BmMdjtg9YqN8Jg72NO8j/UzOatvWVO+7qayWof0Og+8Fhy8TejwWEo7Lel0twUg5E/DxDcH12xzvvCoqGXA8/9B8GTBTqgio8Z1QPSkHRu1EE7a6yLz6DWCIAjitPgbsMsFHkMy9vmHNhwvY6RsJPc0kyoAp/KSs36pX8GuU68axuA7yiLCdG28IEvuS7e14/xU4vZqXhnr7befFdZZzcYFwYCERSxk4DWnkiGDhxmzgSD9tvR6keo/+8XBMudPZPk4yHOlrLfGF5Anu00ugDwgotlFNh9NoXYkRQB/OxHLTUPBmc3uCaCXg9EHHIHNKv1AmemKCc0A69gk64ABFNzB1HG04i2ysZ1Vm0J0GEZsoy9U6yF2unjFyAjY=----ATTACHMENT:----MjQ3MzI5OTgyODA5NDc3OSA1NDQxNDM0MjIxODQyMjI2IDk0NjE1OTY3OTUwODMwOTY=