diff options
author | varac <varacanero@zeromail.org> | 2016-07-13 20:07:09 +0200 |
---|---|---|
committer | varac <varacanero@zeromail.org> | 2016-07-13 20:07:09 +0200 |
commit | 5d01197cf893d4a8c9a57f7c963f47393d34e157 (patch) | |
tree | 860e97c0af1ad8c7d4bd1aecb0b7e6658b312846 /lib/github.rb |
initial commit, import from pixelated_dashboard
Diffstat (limited to 'lib/github.rb')
-rw-r--r-- | lib/github.rb | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/lib/github.rb b/lib/github.rb new file mode 100644 index 0000000..77d765e --- /dev/null +++ b/lib/github.rb @@ -0,0 +1,123 @@ +require 'date' +require 'open-uri' +require 'json' + +class Github + + def initialize(orgname) + url='https://api.github.com/orgs/'+orgname + @headers={'User-Agent' => 'LEAP Dashboard'} + if ENV.has_key?('GITHUB_AUTH_TOKEN') + @headers['Authorization'] = "token "+ENV['GITHUB_AUTH_TOKEN'] + end + @org=JSON.parse(open(url,@headers).read) + @repos=JSON.parse(open(@org['repos_url'],@headers).read) + end + + def repocount + @repos.count + end + + def prcount + count=0 + @repos.each do |r| + count+=JSON.parse(open(r['url']+'/pulls',@headers).read).count + end + return count + end + + def recent_open_issues + count=0 + @repos.each do |r| + url=r['url']+'/issues?state=open&since='+(Time.new().to_datetime << 1).to_time.strftime("%Y-%m-%dT%H:%M:%SZ") + count+=JSON.parse(open(url,@headers).read).count + end + return count + end + def recent_issues + count=0 + @repos.each do |r| + url=r['url']+'/issues?state=all&since='+(Time.new().to_datetime << 1).to_time.strftime("%Y-%m-%dT%H:%M:%SZ") + count+=JSON.parse(open(url,@headers).read).count + end + return count + end + def open_pull_requests + count=0 + @repos.each do |r| + url=r['url']+'/pulls?state=open' + count+=JSON.parse(open(url,@headers).read).count + end + return count + end + def pull_requests + count=0 + @repos.each do |r| + url=r['url']+'/pulls?state=all' + count+=JSON.parse(open(url,@headers).read).count + end + return count + end + def forks + count=0 + @repos.each do |r| + url=r['url']+'/forks' + count+=JSON.parse(open(url,@headers).read).count + end + return count + end + def issues_in_development + count=0 + @repos.each do |r| + url=r['url']+'/issues?labels=2%20-%20Development' + count+=JSON.parse(open(url,@headers).read).count + end + return count + end + def prlist + prlist=[] + @repos.each do |r| + JSON.parse(open(r['url']+'/pulls',@headers).read).each do |pr| + prlist<<{'label'=>pr['title'], 'pr_url'=>pr['html_url']} + end + end + return prlist + end + + def stargazers + @repos.inject(0) {|sum,hash| sum + hash['stargazers_count']} + end + def epic_issues + count=0 + @repos.each do |r| + url=r['url']+'/issues?labels=UA%20multiuser' + count+=JSON.parse(open(url,@headers).read).count + end + return count + end + def all_epic_issues + count=0 + @repos.each do |r| + url=r['url']+'/issues?labels=UA%20multiuser&state=all' + count+=JSON.parse(open(url,@headers).read).count + end + return count + end + + def action_items + issues=[] + @repos.each do |r| + url=r['url']+'/issues?labels=Action+item' + JSON.parse(open(url,@headers).read).each do |issue| + title=issue['title'] + if issue.has_key?('assignee') and not issue['assignee'].nil? + assignee=issue['assignee']['login'] + else + assignee='None' + end + issues<<{'label' => title, 'value' => assignee} + end + end + issues + end +end |