示例#1
0
 /**
  * Find feed urls inside a HTML document
  *
  * @access public
  * @param  string    $url        Website url
  * @param  string    $html       HTML content
  * @return array                 List of feed links
  */
 public function find($url, $html)
 {
     Logger::setMessage(get_called_class() . ': Try to discover subscriptions');
     $dom = XmlParser::getHtmlDocument($html);
     $xpath = new DOMXPath($dom);
     $links = array();
     $queries = array('//link[@type="application/rss+xml"]', '//link[@type="application/atom+xml"]');
     foreach ($queries as $query) {
         $nodes = $xpath->query($query);
         foreach ($nodes as $node) {
             $link = $node->getAttribute('href');
             if (!empty($link)) {
                 $feedUrl = new Url($link);
                 $siteUrl = new Url($url);
                 $links[] = $feedUrl->getAbsoluteUrl($feedUrl->isRelativeUrl() ? $siteUrl->getBaseUrl() : '');
             }
         }
     }
     Logger::setMessage(get_called_class() . ': ' . implode(', ', $links));
     return $links;
 }
示例#2
0
 public function testAbsoluteUrl()
 {
     $url = new Url('http://google.fr/');
     $this->assertEquals('http://google.fr/', $url->getAbsoluteUrl());
     $url = new Url('http://google.ca');
     $this->assertEquals('http://google.ca/', $url->getAbsoluteUrl());
     $url = new Url('../bla');
     $this->assertEquals('', $url->getAbsoluteUrl(''));
     $url = new Url('/2014/08/03/4668-noisettes');
     $this->assertEquals('http://www.la-grange.net/2014/08/03/4668-noisettes', $url->getAbsoluteUrl('http://www.la-grange.net/'));
     $url = new Url('http://www.google.fr/../bla');
     $this->assertEquals('http://www.google.fr/../bla', $url->getAbsoluteUrl('http://www.google.fr/'));
     $url = new Url('http://www.google.fr/');
     $this->assertEquals('http://www.google.fr/', $url->getAbsoluteUrl('http://www.google.fr/'));
     $url = new Url('//www.google.fr/search');
     $this->assertEquals('http://www.google.fr/search', $url->getAbsoluteUrl('//www.google.fr/'));
     $url = new Url('//www.google.fr/search');
     $this->assertEquals('http://www.google.fr/search', $url->getAbsoluteUrl());
     $url = new Url('/path');
     $this->assertEquals('http://www.google.fr/path', $url->getAbsoluteUrl('http://www.google.fr/'));
     $url = new Url('/path#test');
     $this->assertEquals('http://www.google.fr/path#test', $url->getAbsoluteUrl('http://www.google.fr/'));
     $url = new Url('anything');
     $this->assertEquals('http://www.google.fr/anything', $url->getAbsoluteUrl('http://www.google.fr/'));
     $url = new Url('index.php?foo=bar&test=1');
     $this->assertEquals('http://www.google.fr/index.php?foo=bar&test=1', $url->getAbsoluteUrl('http://www.google.fr/'));
     $url = new Url('index.php?foo=bar&test=1');
     $this->assertEquals('', $url->getAbsoluteUrl());
     $url = new Url('https://127.0.0.1:8000/here/test?v=3');
     $this->assertEquals('https://127.0.0.1:8000/here/test?v=3', $url->getAbsoluteUrl());
     $url = new Url('http://www.lofibucket.com/articles/oscilloscope_quake.html');
     $this->assertEquals('http://www.lofibucket.com/articles/oscilloscope_quake.html', $url->getAbsoluteUrl());
     $url = new Url('test?v=3');
     $this->assertEquals('https://127.0.0.1:8000/here/test?v=3', $url->getAbsoluteUrl('https://127.0.0.1:8000/here/'));
 }