diff --git a/bridges/CastorusBridge.php b/bridges/CastorusBridge.php new file mode 100644 index 00000000..d54bb5b4 --- /dev/null +++ b/bridges/CastorusBridge.php @@ -0,0 +1,92 @@ +maintainer = "logmanoriginal"; + $this->name = "Castorus Bridge"; + $this->uri = $this->getURI(); + $this->description = "Returns the latest changes"; + $this->update = "2016-08-05"; + } + + // Extracts the tile from an actitiy + function ExtractActivityTitle($activity){ + $title = $activity->find('a', 0); + + if(!$title) + $this->returnError('Cannot find title!', 404); + + return htmlspecialchars(trim($title->plaintext)); + } + + // Extracts the url from an actitiy + function ExtractActivityUrl($activity){ + $url = $activity->find('a', 0); + + if(!$url) + $this->returnError('Cannot find url!', 404); + + return $this->getURI() . $url->href; + } + + // Extracts the time from an activity + function ExtractActivityTime($activity){ + // Unfortunately the time is part of the parent node, + // so we have to clear all child nodes first + $nodes = $activity->find('*'); + + if(!$nodes) + $this->returnError('Cannot find nodes!', 404); + + foreach($nodes as $node){ + $node->outertext = ''; + } + + return strtotime($activity->innertext); + } + + // Extracts the price change + function ExtractActivityPrice($activity){ + $price = $activity->find('span', 1); + + if(!$price) + $this->returnError('Cannot find price!', 404); + + return $price->innertext; + } + + public function collectData(array $params){ + $html = $this->file_get_html($this->getURI()); + + if(!$html) + $this->returnError('Could not load data from ' . $this->getURI() . '!', 404); + + $activities = $html->find('div#activite/li'); + + if(!$activities) + $this->returnError('Failed to find activities!', 404); + + foreach($activities as $activity){ + $item = new \Item(); + + $item->title = $this->ExtractActivityTitle($activity); + $item->uri = $this->ExtractActivityUrl($activity); + $item->timestamp = $this->ExtractActivityTime($activity); + $item->content = '' . $item->title . '

' + . $this->ExtractActivityPrice($activity) . '

'; + + $this->items[] = $item; + } + } + + public function getName(){ + return 'Castorus Bridge'; + } + + public function getURI(){ + return 'http://www.castorus.com'; + } + + public function getCacheDuration(){ + return 3600; // 1 hour + } +}