/** * @param string $url * @param \DateTime $lastModified * * @return HttpDriverResponse * * @throws DriverUnreachableResourceException */ public function getResponse($url, \DateTime $lastModified) { if (!is_readable($url)) { throw new DriverUnreachableResourceException("not found or not readable : {$url}"); } $body = file_get_contents($url); $response = new HttpDriverResponse(); $response->setHttpCode(HttpDriverResponse::HTTP_CODE_OK); $response->setBody($body); return $response; }
/** * @param string $url * @param \DateTime $lastModified * * @return HttpDriverResponse * @deprecated removed in version 3.0 */ public function getResponse($url, \DateTime $lastModified) { $ressource = $this->client->request('GET', $url); $response = new HttpDriverResponse(); $response->setHttpCode($ressource->getStatusCode()); $response->setHttpVersion($ressource->getProtocolVersion()); $response->setHttpMessage($ressource->getReasonPhrase()); $response->setHeaders($ressource->getHeaders()); $response->setBody($ressource->getBody()); return $response; }
/** * @param string $headerString * @param string $body * * @return \Debril\RssAtomBundle\Driver\HttpDriverResponse */ public function getHttpResponse($headerString, $body) { $headers = array(); preg_match('/(?<version>\\S+) (?P<code>\\d+) (?P<message>\\V+)/', $headerString, $headers); $response = new HttpDriverResponse(); $response->setBody($body); $response->setHttpCode($headers['code']); $response->setHttpMessage($headers['message']); $response->setHttpVersion($headers['version']); $response->setHeaders($headerString); return $response; }
/** * @param $responseHttpCode * * @return \Debril\RssAtomBundle\Driver\HttpCurlDriver a mocked instance */ public function getMockDriver($responseHttpCode) { $mock = $this->getMock('\\Debril\\RssAtomBundle\\Driver\\HttpCurlDriver'); $response = new HttpDriverResponse(); $response->setHttpCode($responseHttpCode); $mock->expects($this->any())->method('getResponse')->will($this->returnValue($response)); return $mock; }
/** * Parse the body of a feed and write it into the FeedInInterface instance. * * @param HttpDriverResponse $response * @param FeedInInterface $feed * @param array $filters * * @return FeedInInterface */ public function parseBody(HttpDriverResponse $response, FeedInInterface $feed, array $filters = array()) { if ($response->getHttpCodeIsOk() || $response->getHttpCodeIsRedirection()) { $xmlBody = new SimpleXMLElement($response->getBody()); $parser = $this->getAccurateParser($xmlBody); return $parser->parse($xmlBody, $feed, $filters); } switch ($response->getHttpCode()) { case HttpDriverResponse::HTTP_CODE_NOT_FOUND: throw new FeedNotFoundException($response->getHttpMessage()); case HttpDriverResponse::HTTP_CODE_NOT_MODIFIED: throw new FeedNotModifiedException($response->getHttpMessage()); case HttpDriverResponse::HTTP_CODE_SERVER_ERROR: throw new FeedServerErrorException($response->getHttpMessage()); case HttpDriverResponse::HTTP_CODE_FORBIDDEN: throw new FeedForbiddenException($response->getHttpMessage()); default: throw new FeedCannotBeReadException($response->getHttpMessage(), $response->getHttpCode()); } }