Skip to content

Commit

Permalink
Extract a github pull request class
Browse files Browse the repository at this point in the history
  • Loading branch information
danidoni committed Feb 7, 2023
1 parent 8df92d5 commit ff41849
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 9 deletions.
30 changes: 30 additions & 0 deletions src/api/app/models/github.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
class Github
attr_reader :event, :webhook_payload

def initialize(event, webhook_payload)
@event = event
@webhook_payload = webhook_payload
end

def default_payload
{
scm: 'github',
event: event,
api_endpoint: api_endpoint
}
end

private

def api_endpoint
sender_url = webhook_payload.dig(:sender, :url)
return unless sender_url

host = URI.parse(sender_url).host
if host.start_with?('api.github.com')
"https://#{host}"
else
"https://#{host}/api/v3/"
end
end
end
13 changes: 13 additions & 0 deletions src/api/app/models/github/pull_request.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
class Github::PullRequest < Github
def payload
default_payload.merge(
commit_sha: webhook_payload.dig(:pull_request, :head, :sha),
pr_number: webhook_payload[:number],
source_branch: webhook_payload.dig(:pull_request, :head, :ref),
target_branch: webhook_payload.dig(:pull_request, :base, :ref),
action: webhook_payload[:action],
source_repository_full_name: webhook_payload.dig(:pull_request, :head, :repo, :full_name),
target_repository_full_name: webhook_payload.dig(:pull_request, :base, :repo, :full_name)
)
end
end
10 changes: 1 addition & 9 deletions src/api/app/models/github_payload_extractor.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,7 @@ def payload

case event
when 'pull_request'
payload.merge!({
commit_sha: webhook_payload.dig(:pull_request, :head, :sha),
pr_number: webhook_payload[:number],
source_branch: webhook_payload.dig(:pull_request, :head, :ref),
target_branch: webhook_payload.dig(:pull_request, :base, :ref),
action: webhook_payload[:action],
source_repository_full_name: webhook_payload.dig(:pull_request, :head, :repo, :full_name),
target_repository_full_name: webhook_payload.dig(:pull_request, :base, :repo, :full_name)
})
return Github::PullRequest.new(event, webhook_payload).payload
when 'push' # GitHub doesn't have different push events for commits and tags
github_payload_push(payload)
end
Expand Down

0 comments on commit ff41849

Please sign in to comment.