Class: ContributionChecker::Checker
- Inherits:
-
Object
- Object
- ContributionChecker::Checker
- Defined in:
- lib/contribution-checker/checker.rb
Overview
The Checker.
Instance Method Summary collapse
-
#check ⇒ Hash
Checks whether the commit is counted as a contribution for the authenticated user.
-
#initialize(options = {}) ⇒ ContributionChecker::Checker
constructor
Initialise a new Checker instance with an API access token and commit URL.
Constructor Details
#initialize(options = {}) ⇒ ContributionChecker::Checker
Initialise a new Checker instance with an API access token and commit URL.
:access_token => "<Your 40 char GitHub API token>",
:commit_url => "https://github.com/user/repo/commit/sha"
for an authenticated user and a specific commit
22 23 24 25 26 27 |
# File 'lib/contribution-checker/checker.rb', line 22 def initialize( = {}) .each do |key, val| instance_variable_set :"@#{key}", val end @client = Octokit::Client.new(:access_token => @access_token) end |
Instance Method Details
#check ⇒ Hash
Checks whether the commit is counted as a contribution for the authenticated user.
{
:contribution => true,
:and_criteria => {
:commit_in_valid_branch => true,
:commit_in_last_year => true,
:repo_not_a_fork => true,
:commit_email_linked_to_user => true,
:commit_email => "[email protected]",
:default_branch => "master"
},
:or_criteria => {
:user_has_starred_repo => false,
:user_can_push_to_repo => false,
:user_is_repo_org_member => true,
:user_has_fork_of_repo => false,
:user_has_opened_issue_or_pr_in_repo => false
}
}
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/contribution-checker/checker.rb', line 51 def check @nwo, @sha = parse_commit_url @commit_url begin @commit = @client.commit @nwo, @sha rescue ArgumentError raise ContributionChecker::InvalidCommitUrlError rescue Octokit::NotFound raise ContributionChecker::InvalidCommitUrlError rescue Octokit::Unauthorized raise ContributionChecker::InvalidAccessTokenError end @repo = @client.repository @nwo @user = @client.user @commit_in_valid_branch = commit_in_valid_branch? @commit_in_last_year = commit_in_last_year? @repo_not_a_fork = !repository_is_fork? @commit_email_linked_to_user = commit_email_linked_to_user? @user_has_starred_repo = user_has_starred_repo? @user_can_push_to_repo = user_can_push_to_repo? @user_is_repo_org_member = user_is_repo_org_member? @user_has_fork_of_repo = user_has_fork_of_repo? @user_has_opened_issue_or_pr_in_repo = user_has_opened_issue_or_pr_in_repo? { :contribution => and_criteria_met? && or_criteria_met?, :and_criteria => { :commit_in_valid_branch => @commit_in_valid_branch, :commit_in_last_year => @commit_in_last_year, :repo_not_a_fork => @repo_not_a_fork, :commit_email_linked_to_user => @commit_email_linked_to_user, :commit_email => @commit[:commit][:author][:email], :default_branch => @repo[:default_branch], }, :or_criteria => { :user_has_starred_repo => @user_has_starred_repo, :user_can_push_to_repo => @user_can_push_to_repo, :user_is_repo_org_member => @user_is_repo_org_member, :user_has_fork_of_repo => @user_has_fork_of_repo, :user_has_opened_issue_or_pr_in_repo => @user_has_opened_issue_or_pr_in_repo, } } end |