pushpop-github
Github API integration for Pushpop.
Installation
Add the pushpop-github gem to your Gemfile:
gem 'pushpop-github'
or install it locally:
$ gem install pushpop-github
Usage
Here's a simple that job defines a github step, setting a user and repository:
require 'pushpop-github'
job do
github do
user 'keenlabs'
repository 'pushpop'
end
step do |repository, _|
puts "keenlabs/pushpop has #{repository.stargazers_count} stars!"
end
end
The github step pulls repository information from the Github API and passes it on to
the next step.
Repository fields
Here's what repository data looks like, using the main Pushpop repository as an example:
{
"id": 18272447,
"name": "pushpop",
"full_name": "keenlabs/pushpop",
"owner": {
"login": "keenlabs",
"id": 1315418,
"avatar_url": "https://avatars.githubusercontent.com/u/1315418?",
"gravatar_id": "b948c4bc2de9618c488431612d2ff99d",
"url": "https://api.github.com/users/keenlabs",
"html_url": "https://github.com/keenlabs",
"followers_url": "https://api.github.com/users/keenlabs/followers",
"following_url": "https://api.github.com/users/keenlabs/following{/other_user}",
"gists_url": "https://api.github.com/users/keenlabs/gists{/gist_id}",
"starred_url": "https://api.github.com/users/keenlabs/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/keenlabs/subscriptions",
"organizations_url": "https://api.github.com/users/keenlabs/orgs",
"repos_url": "https://api.github.com/users/keenlabs/repos",
"events_url": "https://api.github.com/users/keenlabs/events{/privacy}",
"received_events_url": "https://api.github.com/users/keenlabs/received_events",
"type": "Organization",
"site_admin": false
},
"private": false,
"html_url": "https://github.com/keenlabs/pushpop",
"description": "Send alerts and recurring reports based on Keen IO events",
"fork": false,
"url": "https://api.github.com/repos/keenlabs/pushpop",
"forks_url": "https://api.github.com/repos/keenlabs/pushpop/forks",
"keys_url": "https://api.github.com/repos/keenlabs/pushpop/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/keenlabs/pushpop/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/keenlabs/pushpop/teams",
"hooks_url": "https://api.github.com/repos/keenlabs/pushpop/hooks",
"issue_events_url": "https://api.github.com/repos/keenlabs/pushpop/issues/events{/number}",
"events_url": "https://api.github.com/repos/keenlabs/pushpop/events",
"assignees_url": "https://api.github.com/repos/keenlabs/pushpop/assignees{/user}",
"branches_url": "https://api.github.com/repos/keenlabs/pushpop/branches{/branch}",
"tags_url": "https://api.github.com/repos/keenlabs/pushpop/tags",
"blobs_url": "https://api.github.com/repos/keenlabs/pushpop/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/keenlabs/pushpop/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/keenlabs/pushpop/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/keenlabs/pushpop/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/keenlabs/pushpop/statuses/{sha}",
"languages_url": "https://api.github.com/repos/keenlabs/pushpop/languages",
"stargazers_url": "https://api.github.com/repos/keenlabs/pushpop/stargazers",
"contributors_url": "https://api.github.com/repos/keenlabs/pushpop/contributors",
"subscribers_url": "https://api.github.com/repos/keenlabs/pushpop/subscribers",
"subscription_url": "https://api.github.com/repos/keenlabs/pushpop/subscription",
"commits_url": "https://api.github.com/repos/keenlabs/pushpop/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/keenlabs/pushpop/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/keenlabs/pushpop/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/keenlabs/pushpop/issues/comments/{number}",
"contents_url": "https://api.github.com/repos/keenlabs/pushpop/contents/{+path}",
"compare_url": "https://api.github.com/repos/keenlabs/pushpop/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/keenlabs/pushpop/merges",
"archive_url": "https://api.github.com/repos/keenlabs/pushpop/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/keenlabs/pushpop/downloads",
"issues_url": "https://api.github.com/repos/keenlabs/pushpop/issues{/number}",
"pulls_url": "https://api.github.com/repos/keenlabs/pushpop/pulls{/number}",
"milestones_url": "https://api.github.com/repos/keenlabs/pushpop/milestones{/number}",
"notifications_url": "https://api.github.com/repos/keenlabs/pushpop/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/keenlabs/pushpop/labels{/name}",
"releases_url": "https://api.github.com/repos/keenlabs/pushpop/releases{/id}",
"created_at": "2014-03-30T19:57:28Z",
"updated_at": "2014-06-09T06:15:31Z",
"pushed_at": "2014-05-22T00:54:09Z",
"git_url": "git://github.com/keenlabs/pushpop.git",
"ssh_url": "[email protected]:keenlabs/pushpop.git",
"clone_url": "https://github.com/keenlabs/pushpop.git",
"svn_url": "https://github.com/keenlabs/pushpop",
"homepage": "",
"size": 896,
"stargazers_count": 17,
"watchers_count": 17,
"language": "Ruby",
"has_issues": true,
"has_downloads": true,
"has_wiki": true,
"forks_count": 4,
"mirror_url": null,
"open_issues_count": 1,
"forks": 4,
"open_issues": 1,
"watchers": 17,
"default_branch": "master",
"organization": {
"login": "keenlabs",
"id": 1315418,
"avatar_url": "https://avatars.githubusercontent.com/u/1315418?",
"gravatar_id": "b948c4bc2de9618c488431612d2ff99d",
"url": "https://api.github.com/users/keenlabs",
"html_url": "https://github.com/keenlabs",
"followers_url": "https://api.github.com/users/keenlabs/followers",
"following_url": "https://api.github.com/users/keenlabs/following{/other_user}",
"gists_url": "https://api.github.com/users/keenlabs/gists{/gist_id}",
"starred_url": "https://api.github.com/users/keenlabs/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/keenlabs/subscriptions",
"organizations_url": "https://api.github.com/users/keenlabs/orgs",
"repos_url": "https://api.github.com/users/keenlabs/repos",
"events_url": "https://api.github.com/users/keenlabs/events{/privacy}",
"received_events_url": "https://api.github.com/users/keenlabs/received_events",
"type": "Organization",
"site_admin": false
},
"network_count": 4,
"subscribers_count": 15
}
Any of these properties can be accessed by calling the property name on the repository object:
repository.has_downloads #=> true
repository.owner.url #=> "https://api.github.com/users/keenlabs"
See the Github API Documentation for more information.
Credits
pushpop-github uses the excellent github_api gem to
communicate with the Github API. It has, like, everything.
Contributing
Please do! Run the specs with rake:
$ bundle exec rake spec