/** * 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()); } }