/** * Render the feed in specified format. * * @param Feed $feed Feed to render * * @return string * * @throws \InvalidArgumentException if given format formatter does not exists */ public function render(Feed $feed) { $items = $this->dm->getRepository('Api43FeedBundle:FeedItem')->findByFeed($feed->getId(), $feed->getSortBy()); $feedUrl = $this->router->generate('feed_xml', array('slug' => $feed->getSlug()), true); switch ($feed->getFormatter()) { case 'rss': $formatter = new Formatter\RssFormatter($feed, $items, $feedUrl, $this->generator); break; case 'atom': $formatter = new Formatter\AtomFormatter($feed, $items, $feedUrl, $this->generator); break; default: throw new \InvalidArgumentException(sprintf("Format '%s' is not available. Please see documentation.", $feed->getFormatter())); } return $formatter->render(); }