From 3922b9534c122f1fa5856b350cd2542256346916 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre=20Mazi=C3=A8re?= Date: Sun, 26 Jun 2016 00:33:27 +0200 Subject: [PATCH] new bridge: Github Issue MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Pierre Mazière --- bridges/GithubIssueBridge.php | 67 +++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 bridges/GithubIssueBridge.php diff --git a/bridges/GithubIssueBridge.php b/bridges/GithubIssueBridge.php new file mode 100644 index 0000000..390c2e8 --- /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 + } +}