Esempio n. 1
0
 /**
  * {@inheritdoc}
  */
 public function parse(FeedInterface $feed, FetcherResultInterface $fetcher_result, StateInterface $state)
 {
     $result = new ParserResult();
     Reader::setExtensionManager(\Drupal::service('feed.bridge.reader'));
     Reader::registerExtension('GeoRSS');
     $raw = $fetcher_result->getRaw();
     if (!strlen(trim($raw))) {
         throw new EmptyFeedException();
     }
     try {
         $channel = Reader::importString($raw);
     } catch (ExceptionInterface $e) {
         $args = ['%site' => $feed->label(), '%error' => trim($e->getMessage())];
         throw new \RuntimeException($this->t('The feed from %site seems to be broken because of error "%error".', $args));
     }
     foreach ($channel as $delta => $entry) {
         $item = new SyndicationItem();
         // Move the values to an array as expected by processors.
         $item->set('title', $entry->getTitle())->set('guid', $entry->getId())->set('url', $entry->getLink())->set('guid', $entry->getId())->set('url', $entry->getLink())->set('description', $entry->getDescription())->set('tags', $entry->getCategories()->getValues())->set('feed_title', $channel->getTitle())->set('feed_description', $channel->getDescription())->set('feed_url', $channel->getLink());
         if ($image = $channel->getImage()) {
             $item->set('feed_image_uri', $image['uri']);
         }
         if ($enclosure = $entry->getEnclosure()) {
             $item->set('enclosures', [rawurldecode($enclosure->url)]);
         }
         if ($author = $entry->getAuthor()) {
             $author += ['name' => '', 'email' => ''];
             $item->set('author_name', $author['name'])->set('author_email', $author['email']);
         }
         if ($date = $entry->getDateModified()) {
             $item->set('timestamp', $date->getTimestamp());
         }
         if ($point = $entry->getGeoPoint()) {
             $item->set('georss_lat', $point['lat'])->set('georss_lon', $point['lon']);
         }
         $result->addItem($item);
     }
     return $result;
 }
Esempio n. 2
0
File: Rss.php Progetto: nogo/feedbox
 /**
  * Set content for worker
  *
  * @param string $content
  * @return Worker
  */
 public function setContent($content)
 {
     if ($content == null) {
         $this->errors = 'Connection timeout';
     } else {
         $content = trim($content);
         if (empty($content)) {
             $this->errors = 'Source content is empty.';
         } else {
             try {
                 Reader::registerExtension('Syndication');
                 $this->feed = Reader::importString($content);
                 $this->errors = '';
             } catch (InvalidArgumentException $ex) {
                 $this->errors = $ex->getMessage();
                 $this->feed = null;
             } catch (RuntimeException $ex) {
                 $this->errors = $ex->getMessage();
                 $this->feed = null;
             }
         }
     }
     return $this;
 }
Esempio n. 3
0
 public function testRegistersUserExtension()
 {
     try {
         Reader\Reader::addPrefixPath('My\\Extension', __DIR__ . '/Reader/_files/My/Extension');
         Reader\Reader::registerExtension('JungleBooks');
     } catch (\Exception $e) {
         $this->fail($e->getMessage());
     }
     $this->assertTrue(Reader\Reader::isRegistered('JungleBooks'));
 }
Esempio n. 4
0
 public function testRegistersUserExtension()
 {
     require_once __DIR__ . '/_files/My/Extension/JungleBooks/Entry.php';
     require_once __DIR__ . '/_files/My/Extension/JungleBooks/Feed.php';
     $manager = Reader\Reader::getExtensionManager();
     $manager->setInvokableClass('JungleBooks\\Entry', 'My\\Extension\\JungleBooks\\Entry');
     $manager->setInvokableClass('JungleBooks\\Feed', 'My\\Extension\\JungleBooks\\Feed');
     Reader\Reader::registerExtension('JungleBooks');
     $this->assertTrue(Reader\Reader::isRegistered('JungleBooks'));
 }
Esempio n. 5
0
 public function testRegistersUserExtension()
 {
     Reader\Reader::addPrefixPath('My\\Extension', dirname(__FILE__) . '/_files/My/Extension');
     Reader\Reader::registerExtension('JungleBooks');
     $this->assertTrue(Reader\Reader::isRegistered('JungleBooks'));
 }