diff --git a/bridges/GithubIssueBridge.php b/bridges/GithubIssueBridge.php new file mode 100644 index 00000000..eaf4d9dd --- /dev/null +++ b/bridges/GithubIssueBridge.php @@ -0,0 +1,67 @@ +maintainer = 'Pierre Mazière'; + $this->name = 'Github Issue'; + $this->uri = ''; + $this->description = 'Returns the comments of a github project issue'; + $this->update = '2016-06-25'; + + $this->parameters= + '[ + { + "name" : "User name", + "identifier" : "u" + }, + { + "name" : "Project name", + "identifier" : "p" + }, + { + "name" : "Issue number", + "identifier" : "i" + } + + ]'; + } + + public function collectData(array $param){ + $uri = 'https://github.com/'.$param['u'].'/'.$param['p'].'/issues/'.$param['i']; + $html = file_get_html($uri) + or $this->returnError('No results for Github Issue '.$param['i'].' in project '.$param['u'].'/'.$param['p'], 404); + + foreach($html->find('.js-comment-container') as $comment){ + + $item = new \Item(); + $item->name=$comment->find('img',0)->getAttribute('alt'); + + $comment=$comment->firstChild()->nextSibling(); + + $item->uri=$uri.'#'.$comment->getAttribute('id'); + $item->title=trim($comment->firstChild()->plaintext); + $item->timestamp=strtotime($comment->find('relative-time',0)->getAttribute('datetime')); + $item->content=$comment->find('.comment-body',0)->innertext; + + $this->items[]=$item; + } + } + + public function getName(){ + return 'Github Issue'; + } + + public function getURI(){ + return ''; + } + + public function getCacheDuration(){ + return 600; // ten minutes + } +}