-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathrequest_parser.rb
62 lines (53 loc) · 1.51 KB
/
request_parser.rb
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
require 'json'
class RequestParser
def initialize(request)
@request = request
end
attr_accessor :request
def parse
case request.env['HTTP_X_GITHUB_EVENT']
when 'gollum'
parse_gollum
else
nil
end
end
def parse_gollum
j = JSON.parse(request.body.read)
GollumEvent.new(
j['sender']['login'], j['sender']['html_url'], j['pages'][0]['action'],
j['pages'][0]['page_name'], j['pages'][0]['html_url'],
j['repository']['full_name'], j['repository']['html_url'],
)
end
end
class Event
def build_message
nil
end
end
# def self.wiki_change_message(sender_name, sender_link, action, page_name, page_link, repo_name, repo_url)
class GollumEvent < Event
def initialize(sender_name, sender_link, action, page_name, page_link, repo_name, repo_url)
@sender_name = sender_name
@sender_link = sender_link
@action = action
@page_name = page_name
@page_link = page_link
@repo_name = repo_name
@repo_url = repo_url
end
attr_accessor :sender_name, :sender_link, :action, :page_name, :page_link, :repo_name, :repo_url
def build_message
<<EOT
[#{repo_name}] <#{sender_link}|#{sender_name}> #{action} the <#{page_link}|#{page_name}> wiki of <#{repo_url}|#{repo_name}>
EOT
end
=begin
def wiki_change_message(sender_name, sender_link, action, page_name, page_link, repo_name, repo_url)
<<EOT
[#{repo_name}] <#{sender_link}|#{sender_name}> #{action} the <#{page_link}|#{page_name}> wiki of <#{repo_url}|#{repo_name}>
EOT
end
=end
end