From d5eb53ecd21784489a202e57ca786e8050443d20 Mon Sep 17 00:00:00 2001 From: ORelio Date: Tue, 19 Jul 2016 19:37:33 +0200 Subject: [PATCH] [WeLiveSecurity] New bridge, Security News. --- bridges/WeLiveSecurityBridge.php | 75 ++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 bridges/WeLiveSecurityBridge.php diff --git a/bridges/WeLiveSecurityBridge.php b/bridges/WeLiveSecurityBridge.php new file mode 100644 index 00000000..cdb04bd3 --- /dev/null +++ b/bridges/WeLiveSecurityBridge.php @@ -0,0 +1,75 @@ +maintainer = 'ORelio'; + $this->name = $this->getName(); + $this->uri = $this->getURI(); + $this->description = 'Returns the newest articles.'; + $this->update = '2016-07-19'; + } + + public function collectData(array $param) { + + function ExtractFromDelimiters($string, $start, $end) { + if (strpos($string, $start) !== false) { + $section_retrieved = substr($string, strpos($string, $start) + strlen($start)); + $section_retrieved = substr($section_retrieved, 0, strpos($section_retrieved, $end)); + return $section_retrieved; + } return false; + } + + function StripWithDelimiters($string, $start, $end) { + while (strpos($string, $start) !== false) { + $section_to_remove = substr($string, strpos($string, $start)); + $section_to_remove = substr($section_to_remove, 0, strpos($section_to_remove, $end) + strlen($end)); + $string = str_replace($section_to_remove, '', $string); + } return $string; + } + + $feed = $this->getURI().'feed/'; + $html = $this->file_get_html($feed) or $this->returnError('Could not request '.$this->getName().': '.$feed, 500); + $limit = 0; + + foreach ($html->find('item') as $element) { + if ($limit < 5) { + + $article_image = $element->find('image', 0)->plaintext; + $article_url = ExtractFromDelimiters($element->innertext, '', ''); + $article_summary = ExtractFromDelimiters($element->innertext, '', '

'); + $article_html = file_get_contents($article_url) or $this->returnError('Could not request '.$this->getName().': '.$article_url, 500); + if (substr($article_html, 0, 2) == "\x1f\x8b") //http://www.gzip.org/zlib/rfc-gzip.html#header-trailer -> GZip ID1 + $article_html = gzdecode($article_html); //Response is GZipped even if we didn't accept GZip!? Let's decompress... + $article_html = str_get_html($article_html); //Now we have our HTML data. But still, that's an important HTTP violation... + $article_content = $article_html->find('div.wlistingsingletext', 0)->innertext; + $article_content = StripWithDelimiters($article_content, ''); + $article_content = '

' + .'

'.$article_summary.'

' + .trim($article_content); + + $item = new \Item(); + $item->uri = $article_url; + $item->thumbnailUri = $article_image; + $item->title = $element->find('title', 0)->plaintext; + $item->author = $article_html->find('a[rel=author]', 0)->plaintext; + $item->timestamp = strtotime($element->find('pubDate', 0)->plaintext); + $item->content = $article_content; + $this->items[] = $item; + $limit++; + + } + } + } + + public function getName() { + return 'We Live Security'; + } + + public function getURI() { + return 'http://www.welivesecurity.com/'; + } + + public function getCacheDuration() { + return 3600; //1 hour + } +} \ No newline at end of file