This repository was archived by the owner on Aug 30, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathapp.rb
More file actions
47 lines (39 loc) · 1.28 KB
/
app.rb
File metadata and controls
47 lines (39 loc) · 1.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
$LOAD_PATH << File.expand_path('../app', __FILE__)
require 'sinatra'
require 'octokit'
require 'json'
require 'services/creates_commit_status'
require 'services/determines_pull_request_sha'
require 'services/handles_event/issue_comment'
require 'services/handles_event/null'
require 'services/handles_event/pull_request'
require 'services/infers_code_review'
class App < Sinatra::Base
post '/webhook' do
event_type = request.env["HTTP_X_GITHUB_EVENT"]
event_body = JSON.parse(request.body.read)
handler = build_event_handler(event_type)
handler.handle(event_body)
status 204
end
private
def build_event_handler(event_type)
client = Octokit::Client.new(access_token: ENV["GITHUB_ACCESS_TOKEN"])
creates_commit_status = CreatesCommitStatus.new(github_client: client)
case event_type
when "pull_request"
HandlesEvent::PullRequest.new(
creates_commit_status: creates_commit_status
)
when "issue_comment"
determines_pr_sha = DeterminesPullRequestSHA.new(github_client: client)
HandlesEvent::IssueComment.new(
infers_code_review: InfersCodeReview.new,
determines_pull_request_sha: determines_pr_sha,
creates_commit_status: creates_commit_status
)
else
HandlesEvent::Null.new
end
end
end