issue 0.3.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/README.md +2 -1
- data/lib/issue/version.rb +1 -1
- data/lib/issue/webhook.rb +12 -2
- metadata +15 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 75d2758f4f06a744f34d437ab9f226fa57e114ef4c1679dbbcd76be7e048f609
|
4
|
+
data.tar.gz: b14bbd4a352b18aebc3663c6e2f7390f07e5465ee87e9dab79fd0ec7fc56d623
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61795740364436abbb30a9edfee4db52e94920c050d2062a9f52ce91d303ba8ecf1e1450358921345168d1d12480c84b9212ad5506d6bb16e8f5fdf3d7c048dd
|
7
|
+
data.tar.gz: a3735309f586519995f21b10d6a62eec3f61818101880abad40edcec376533ec492b0b6f834ec9d01135917d16e13b74f678731dc4e2593e01f1b023e5db6eb1
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
|
4
|
+
## 1.0.1 (2023-28-02)
|
5
|
+
|
6
|
+
- Updated dependencies versions (Rack & Openssl)
|
7
|
+
|
8
|
+
## 1.0.0 (2021-12-17)
|
9
|
+
|
10
|
+
- Webhook can discard requests by multiple sender/events pairs
|
11
|
+
|
3
12
|
## 0.3.0 (2021-10-04)
|
4
13
|
|
5
14
|
- Add comment_id to Payload's context
|
data/README.md
CHANGED
@@ -28,7 +28,7 @@ The `Issue::Webhook` is used to declare and parse a GitHub webhook. At initializ
|
|
28
28
|
|
29
29
|
- **secret_token**: The GitHub secret access token for authorization
|
30
30
|
- **origin**: The repository to accept payloads from. If nil any origin will be accepted. If not nil any request from a different repository will be ignored
|
31
|
-
- **discard_sender**: The GitHub handle of a user whose events will be ignored. Usually the organization bot. If nil no user will be ignored.
|
31
|
+
- **discard_sender**: The GitHub handle of a user whose events will be ignored. Usually the organization bot. If nil no user will be ignored. To ignore only specific events use a Hash where keys are usernames and values are arrays of events to ignore for that username.
|
32
32
|
- **accept_events**: An Array of GitHub event types to accept. If nil all events will be accepted.
|
33
33
|
|
34
34
|
Once it is initialized a request can be parsed passing it to the **`parse_request`** method. After verifying the request signature and checking for the configurated conditions the `parse_request` method returns a [Payload, Error] pair, where the error is nil if nothing failed, and the payload is nil if an error ocurred.
|
@@ -66,6 +66,7 @@ The `Issue::Payload` object includes all the parsed information coming from the
|
|
66
66
|
repo: # the full name of the origin repository
|
67
67
|
sender: # the login of the user triggering the webhook action
|
68
68
|
event_action: # a string: "event.action"
|
69
|
+
comment_id: # id of the comment
|
69
70
|
comment_body: # body of the comment
|
70
71
|
comment_created_at: # created_at value of the comment
|
71
72
|
comment_url: # the html url for the comment
|
data/lib/issue/version.rb
CHANGED
data/lib/issue/webhook.rb
CHANGED
@@ -22,8 +22,8 @@ module Issue
|
|
22
22
|
def initialize(settings={})
|
23
23
|
@secret_token = settings[:secret_token]
|
24
24
|
@accept_origin = settings[:origin]
|
25
|
-
@discard_sender = settings[:discard_sender]
|
26
25
|
@accept_events = [settings[:accept_events]].flatten.compact.uniq.map(&:to_s)
|
26
|
+
@discard_sender = parse_discard_senders(settings[:discard_sender])
|
27
27
|
end
|
28
28
|
|
29
29
|
# This method will parse the passed request.
|
@@ -53,6 +53,16 @@ module Issue
|
|
53
53
|
|
54
54
|
private
|
55
55
|
|
56
|
+
def parse_discard_senders(discard_sender_settings)
|
57
|
+
if discard_sender_settings.is_a?(String)
|
58
|
+
return { discard_sender_settings => [] }
|
59
|
+
elsif discard_sender_settings.is_a?(Hash)
|
60
|
+
return discard_sender_settings.transform_keys {|k| k.to_s }.transform_values {|v| [v].flatten}
|
61
|
+
else
|
62
|
+
return {}
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
56
66
|
def verify_signature
|
57
67
|
gh_signature = request.get_header "HTTP_X_HUB_SIGNATURE"
|
58
68
|
return error!(500, "Can't compute signature") if secret_token.nil? || secret_token.empty?
|
@@ -78,7 +88,7 @@ module Issue
|
|
78
88
|
return error!(422, "No payload") if json_payload.nil? || json_payload.empty?
|
79
89
|
return error!(422, "No event") if event.nil?
|
80
90
|
return error!(200, "Event discarded") unless (accept_events.empty? || accept_events.include?(event))
|
81
|
-
return error!(200, "Event origin discarded") if (discard_sender
|
91
|
+
return error!(200, "Event origin discarded") if (discard_sender[sender] == [] || discard_sender[sender].to_a.include?(event))
|
82
92
|
return error!(403, "Event origin not allowed") if (accept_origin && origin != accept_origin)
|
83
93
|
|
84
94
|
@payload = Issue::Payload.new(json_payload, event)
|
metadata
CHANGED
@@ -1,71 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: issue
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juanjo Bazán
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-02-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: openssl
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 3.1.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 3.1.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rack
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 3.0.4
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 3.0.4
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 13.0.
|
47
|
+
version: 13.0.6
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 13.0.
|
54
|
+
version: 13.0.6
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '3.
|
61
|
+
version: '3.12'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '3.
|
68
|
+
version: '3.12'
|
69
69
|
description: Receive, parse and manage GitHub webhook events for issues, PRs and issue's
|
70
70
|
comments
|
71
71
|
email:
|
@@ -108,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
108
108
|
- !ruby/object:Gem::Version
|
109
109
|
version: '0'
|
110
110
|
requirements: []
|
111
|
-
rubygems_version: 3.
|
111
|
+
rubygems_version: 3.4.6
|
112
112
|
signing_key:
|
113
113
|
specification_version: 4
|
114
114
|
summary: Manage webhook payload for issue events
|