Class: ContributionChecker::Checker

Inherits:
Object
  • Object
show all
Defined in:
lib/contribution-checker/checker.rb

Overview

The Checker.

Instance Method Summary collapse

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

Parameters:

  • options (Hash) (defaults to: {})

    Options which should take the form:



22
23
24
25
26
27
# File 'lib/contribution-checker/checker.rb', line 22

def initialize(options = {})
  options.each do |key, val|
    instance_variable_set :"@#{key}", val
  end
  @client = Octokit::Client.new(:access_token => @access_token)
end

Instance Method Details

#checkHash

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
}

}

Returns:

  • (Hash)

    The return value takes the following form:



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