コード例 #1
0
 /**
  * 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());
     }
 }