Module: GithubBot::Github::Payload
- Included in:
- Client
- Defined in:
- lib/github_bot/github/payload.rb
Overview
The GitHub webhook payload information
Instance Method Summary collapse
-
#base_branch ⇒ String
Public: Returns the base branch that the head was based on.
-
#check_run? ⇒ Boolean
Public: Return <true> if the payload event type is of type ‘check_run’; otherwise, <false>.
-
#head_branch ⇒ String
Public: Returns the head branch that the changes are on.
-
#head_sha ⇒ String
Public: Returns the SHA of the most recent commit for this pull request.
-
#installation_id ⇒ Integer
Public: Returns the installation identifier associated to the event.
-
#issue_comment? ⇒ Boolean
Public: Return <true> if the action type is of type ‘issue_comment’; otherwise, <false> This is used for all other comment triggered issue_comment events.
-
#labeled? ⇒ Boolean
Public: Return <true> if the payload event type is of type ‘labeled’; otherwise, <false>.
-
#pull_request ⇒ Hash
Public: Return the activity related to the pull request.
-
#pull_request? ⇒ Boolean
Public: Return <true> if the payload event type is of type ‘pull_request’; otherwise, <false>.
-
#pull_request_body ⇒ String
Public: Returns the pull request body content.
-
#pull_request_number ⇒ Integer
Public: Returns the pull request number from the payload.
-
#repository_clone_url ⇒ String
Public: Returns the repository URL utilized for performing a ‘git clone’.
-
#repository_default_branch ⇒ String
Public: Returns the repository default branch.
-
#repository_fork_urls ⇒ Array
Public: Returns the repository fork URL from the original project with the most recent updated forked instance first.
-
#repository_full_name ⇒ String
Public: Returns the organization and repository name.
-
#repository_name ⇒ String
Public: Returns the name of the repository where the event was triggered.
-
#repository_pull_request_bots ⇒ Array<String>
Public: Returns a list of class object names to create for validation.
-
#review ⇒ Object
Public: Returns the review information for payloads that are of type pull request review.
-
#review_request_removed? ⇒ Boolean
Public: Return <true> if the payload event type is of type ‘review_request_removed’; otherwise, <false>.
-
#review_requested? ⇒ Boolean
Public: Return <true> if the payload event type is of type ‘review_requested’; otherwise, <false>.
-
#sender_type_bot? ⇒ Boolean
Public: Returns <true> if the sender is of type ‘Bot’; otherwise, <false>.
-
#unlabeled? ⇒ Boolean
Public: Return <true> if the payload event type is of type ‘unlabeled’; otherwise, <false>.
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *args) ⇒ Object (private)
206 207 208 |
# File 'lib/github_bot/github/payload.rb', line 206 def method_missing(method_name, *args) payload[method_name] || super end |
Instance Method Details
#base_branch ⇒ String
Public: Returns the base branch that the head was based on
108 109 110 |
# File 'lib/github_bot/github/payload.rb', line 108 def base_branch pull_request[:base][:ref] end |
#check_run? ⇒ Boolean
Public: Return <true> if the payload event type is of type ‘check_run’; otherwise, <false>
25 26 27 |
# File 'lib/github_bot/github/payload.rb', line 25 def check_run? payload_type == 'check_run' end |
#head_branch ⇒ String
Public: Returns the head branch that the changes are on
101 102 103 |
# File 'lib/github_bot/github/payload.rb', line 101 def head_branch pull_request[:head][:ref] end |
#head_sha ⇒ String
Public: Returns the SHA of the most recent commit for this pull request
90 91 92 93 94 95 96 |
# File 'lib/github_bot/github/payload.rb', line 90 def head_sha if issue_comment? 'HEAD' else pull_request[:head][:sha] end end |
#installation_id ⇒ Integer
Public: Returns the installation identifier associated to the event
15 16 17 |
# File 'lib/github_bot/github/payload.rb', line 15 def installation_id payload[:installation][:id] end |
#issue_comment? ⇒ Boolean
Public: Return <true> if the action type is of type ‘issue_comment’; otherwise, <false> This is used for all other comment triggered issue_comment events
41 42 43 |
# File 'lib/github_bot/github/payload.rb', line 41 def issue_comment? payload_type == 'issue_comment' end |
#labeled? ⇒ Boolean
Public: Return <true> if the payload event type is of type ‘labeled’; otherwise, <false>
46 47 48 |
# File 'lib/github_bot/github/payload.rb', line 46 def labeled? payload_type == 'labeled' end |
#pull_request ⇒ Hash
Public: Return the activity related to the pull request
58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/github_bot/github/payload.rb', line 58 def pull_request if pull_request? payload[:pull_request] elsif check_run? payload[:check_run][:pull_requests].first elsif issue_comment? payload[:issue] else payload.key?(:pull_request) ? payload[:pull_request] : {} end end |
#pull_request? ⇒ Boolean
Public: Return <true> if the payload event type is of type ‘pull_request’; otherwise, <false>
20 21 22 |
# File 'lib/github_bot/github/payload.rb', line 20 def pull_request? payload_type == 'pull_request' end |
#pull_request_body ⇒ String
Public: Returns the pull request body content
115 116 117 |
# File 'lib/github_bot/github/payload.rb', line 115 def pull_request_body pull_request[:body] end |
#pull_request_number ⇒ Integer
Public: Returns the pull request number from the payload
83 84 85 |
# File 'lib/github_bot/github/payload.rb', line 83 def pull_request_number pull_request[:number] end |
#repository_clone_url ⇒ String
Public: Returns the repository URL utilized for performing a ‘git clone’
136 137 138 |
# File 'lib/github_bot/github/payload.rb', line 136 def repository_clone_url repository[:clone_url] end |
#repository_default_branch ⇒ String
Public: Returns the repository default branch
179 180 181 |
# File 'lib/github_bot/github/payload.rb', line 179 def repository_default_branch repository[:default_branch] end |
#repository_fork_urls ⇒ Array
Public: Returns the repository fork URL from the original project with the most recent updated forked instance first
Utilizing API: docs.github.com/en/rest/reference/repos#forks Example: api.github.com/repos/octocat/Hello-World/forks?page=1
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 |
# File 'lib/github_bot/github/payload.rb', line 147 def repository_fork_urls return @repository_fork_urls if @repository_fork_urls @repository_fork_urls = [].tap do |ar| # iterate over pages of forks page_count = 1 forks_url = repository[:forks_url] loop do uri = URI.parse(forks_url) new_query_ar = URI.decode_www_form(String(uri.query)) << ['page', page_count] uri.query = URI.encode_www_form(new_query_ar) Rails.logger.info "#{self.class}##{__method__} retrieving #{uri}" json = uri.open.read json_response = JSON.parse(json) break if json_response.empty? # iterate over each fork and capture the clone_url json_response.each do |fork| ar << fork['clone_url'] end page_count += 1 end end end |
#repository_full_name ⇒ String
Public: Returns the organization and repository name
129 130 131 |
# File 'lib/github_bot/github/payload.rb', line 129 def repository_full_name repository[:full_name] end |
#repository_name ⇒ String
Public: Returns the name of the repository where the event was triggered
122 123 124 |
# File 'lib/github_bot/github/payload.rb', line 122 def repository_name repository[:name] end |
#repository_pull_request_bots ⇒ Array<String>
Public: Returns a list of class object names to create for validation
186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 |
# File 'lib/github_bot/github/payload.rb', line 186 def repository_pull_request_bots return @repository_pull_request_bots if @repository_pull_request_bots file = raw_file_url('.github-bots') @repository_pull_request_bots = [].tap do |ar| if file resp = YAML.safe_load(URI.parse(file).open.read) ar << resp['pull_request'] if resp['pull_request'] end end.flatten rescue SyntaxError => e Rails.logger.error message: "Error parsing file '#{file}'", exception: e # Allow continuation of process just won't utilize any bot validations until # parsing error of file is corrected {} end |
#review ⇒ Object
Public: Returns the review information for payloads that are of type pull request review
71 72 73 |
# File 'lib/github_bot/github/payload.rb', line 71 def review payload[:review] end |
#review_request_removed? ⇒ Boolean
Public: Return <true> if the payload event type is of type ‘review_request_removed’; otherwise, <false>
35 36 37 |
# File 'lib/github_bot/github/payload.rb', line 35 def review_request_removed? payload_type == 'review_request_removed' end |
#review_requested? ⇒ Boolean
Public: Return <true> if the payload event type is of type ‘review_requested’; otherwise, <false>
30 31 32 |
# File 'lib/github_bot/github/payload.rb', line 30 def review_requested? payload_type == 'review_requested' end |
#sender_type_bot? ⇒ Boolean
Public: Returns <true> if the sender is of type ‘Bot’; otherwise, <false>
76 77 78 |
# File 'lib/github_bot/github/payload.rb', line 76 def sender_type_bot? payload[:sender][:type].downcase == 'bot' # rubocop:disable Performance/Casecmp end |
#unlabeled? ⇒ Boolean
Public: Return <true> if the payload event type is of type ‘unlabeled’; otherwise, <false>
51 52 53 |
# File 'lib/github_bot/github/payload.rb', line 51 def unlabeled? payload_type == 'unlabeled' end |