webhook_system 2.4.0 → 2.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: afdbd7185d9cb4993052c2c5f7435d8b469f2d2623d31b63aadcd6aefd3e3c71
4
- data.tar.gz: 05c32f9c6392d3fd9d3d9adf41fa8e21b21dafc8b87a9efd9b4236bf87137fbb
3
+ metadata.gz: de4c38dac5024e7faf9075fa7d08458c23742609626569b61c376c941ba701d0
4
+ data.tar.gz: 80aec1c6d60554d14e54e4e922e6389aa0dec26bced551bec63c0aa684ae3886
5
5
  SHA512:
6
- metadata.gz: 66c102424aae48aa1d133abf5cd88c5233227e1c6b3604bf0c89558736d361c376b2c046e73031bdf5f0a3689c128e26188eae4188961ec476b410cf6f4da061
7
- data.tar.gz: d03f803f206adcc70022a603b9ef02ba9a634e238924fd2a4b6cdf2c003e21c0783e4182ab09d9c5c326e727b64274eeb48bc9e7fc9b241bcf8e25740492e4bc
6
+ metadata.gz: 55b2362374a9683a4c920b507d68e0c70b1c79aad11003315a6fae1bb417cfa568cde6621418dffc196f8ffb1863f82edd01fda9591e6c9bfcd8679b67d0e0ea
7
+ data.tar.gz: 3d03fe8f357631ff856a09c50b98fea1cb5096954413283d5367f5be6eda5c20f3cddf60f870e9f4ccdbe073d707c61a2ccd0716f555929246f33f8ed0792e74
data/.coveralls.yml ADDED
@@ -0,0 +1 @@
1
+ service_name: github
@@ -5,9 +5,11 @@
5
5
  # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
6
  # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
7
 
8
- name: build
8
+ name: ci
9
9
 
10
- on: [push, pull_request]
10
+ on:
11
+ - push
12
+ - pull_request
11
13
 
12
14
  jobs:
13
15
  test:
@@ -15,42 +17,35 @@ jobs:
15
17
  strategy:
16
18
  fail-fast: false
17
19
  matrix:
18
- gemfile: ["rails_7.0"]
19
- ruby: [2.7]
20
+ gemfile: ['rails_7.0', 'rails_7.1']
21
+ ruby: [3.3, 3.2, 3.1]
20
22
  include:
21
23
  - gemfile: rails_7.0
22
- ruby: '3.1'
23
- - gemfile: rails_6.1
24
- ruby: '3.1'
25
- - gemfile: rails_7.0
26
- ruby: '3.0'
27
- - gemfile: rails_6.1
28
24
  ruby: '3.0'
29
- - gemfile: rails_6.1
25
+ - gemfile: rails_7.0
30
26
  ruby: 2.7
31
27
  - gemfile: rails_6.1
32
- ruby: 2.6
33
- - gemfile: rails_6.0
34
28
  ruby: 2.7
35
29
  - gemfile: rails_6.0
36
- ruby: 2.6
30
+ ruby: 2.7
37
31
  - gemfile: rails_5.2
38
- ruby: 2.6
32
+ ruby: 2.7
39
33
  - gemfile: rails_5.1
40
- ruby: 2.6
34
+ ruby: 2.7
41
35
  - gemfile: rails_5.0
42
- ruby: 2.6
43
- - gemfile: rails_4.2
44
- ruby: 2.6
45
- - gemfile: rails_4.2
46
- ruby: 2.5
36
+ ruby: 2.7
47
37
 
48
38
  env:
49
39
  BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile
40
+ CI: true
41
+ COVERALLS_REPO_TOKEN: izk0cvqAVqD2Vdews2UjsnOZHLgzocyQL
50
42
  steps:
51
43
  - uses: actions/checkout@v2
52
44
  - uses: ruby/setup-ruby@v1
53
45
  with:
54
46
  ruby-version: ${{ matrix.ruby }}
55
47
  bundler-cache: true
56
- - run: bundle exec rake
48
+ - name: RSpec and Rubocop
49
+ run: |
50
+ bundle exec rubocop -c .rubocop.yml
51
+ bundle exec rspec
@@ -23,4 +23,4 @@ jobs:
23
23
  - name: Create RuboCop challenge pull request
24
24
  env:
25
25
  GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
26
- run: bundle exec rubocop_challenger go --base-branch=master --email=rubocop-challenger@example.com --name="Rubocop Challenger"
26
+ run: bundle exec rubocop_challenger go --exclude-limit=180 --base-branch=master --email=rubocop@payrollhero.com --name="Rubocop Challenger" --mode=random
data/.rubocop.yml CHANGED
@@ -1,12 +1,30 @@
1
+ require:
2
+ - rubocop-rails
3
+ - rubocop-rspec
4
+ - rubocop-performance
5
+
1
6
  inherit_from:
2
7
  - .rubocop_todo.yml
3
- - .rubocop.hound.yml
8
+
9
+ Rails:
10
+ Enabled: true
4
11
 
5
12
  AllCops:
6
13
  NewCops: enable
7
14
  Exclude:
8
15
  - '*.gemspec'
9
16
  - 'Gemfile'
17
+ - vendor/bundle/ruby/**/*
18
+
19
+ RSpec/NotToNot:
20
+ SupportedStyles: to_not
21
+ # disable because an error is being raised
22
+ Enabled: false
23
+
24
+ Style/TrailingCommaInArrayLiteral:
25
+ EnforcedStyleForMultiline: consistent_comma
26
+ Style/TrailingCommaInHashLiteral:
27
+ EnforcedStyleForMultiline: consistent_comma
10
28
 
11
29
  Style/Lambda:
12
30
  Enabled: false
@@ -55,3 +73,24 @@ Metrics/AbcSize:
55
73
  conditions.
56
74
  Enabled: true
57
75
  Max: 30
76
+
77
+ Metrics/BlockLength:
78
+ Max: 25
79
+ AllowedMethods:
80
+ - context
81
+ - describe
82
+ - define
83
+
84
+ Rails/RakeEnvironment:
85
+ Exclude:
86
+ - 'Rakefile'
87
+
88
+ Rails/ApplicationJob:
89
+ Exclude:
90
+ - 'lib/webhook_system/job.rb'
91
+
92
+ Rails/ApplicationRecord:
93
+ Exclude:
94
+ - 'lib/webhook_system/event_log.rb'
95
+ - 'lib/webhook_system/subscription.rb'
96
+ - 'lib/webhook_system/subscription_topic.rb'
@@ -0,0 +1,4 @@
1
+ ---
2
+ Ignore:
3
+ - Style/RegexpLiteral
4
+
data/.rubocop_todo.yml CHANGED
@@ -1,61 +1,29 @@
1
1
  # This configuration was generated by
2
- # `rubocop --auto-gen-config`
3
- # on 2022-04-27 12:05:35 UTC using RuboCop version 1.28.2.
2
+ # `rubocop --auto-gen-config --exclude-limit 180`
3
+ # on 2023-10-30 03:57:18 UTC using RuboCop version 1.57.2.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
9
  # Offense count: 1
10
- # This cop supports safe auto-correction (--auto-correct).
10
+ # This cop supports safe autocorrection (--autocorrect).
11
11
  # Configuration parameters: TreatCommentsAsGroupSeparators, ConsiderPunctuation, Include.
12
12
  # Include: **/*.gemfile, **/Gemfile, **/gems.rb
13
13
  Bundler/OrderedGems:
14
14
  Exclude:
15
- - 'gemfiles/rails_6.1.gemfile'
15
+ - 'gemfiles/rails_7.1.gemfile'
16
16
 
17
17
  # Offense count: 1
18
- # This cop supports safe auto-correction (--auto-correct).
19
- # Configuration parameters: EnforcedStyle.
20
- # SupportedStyles: empty_lines, no_empty_lines
21
- Layout/EmptyLinesAroundBlockBody:
22
- Exclude:
23
- - 'spec/encoder_spec.rb'
24
-
25
- # Offense count: 2
26
- # This cop supports safe auto-correction (--auto-correct).
27
- # Configuration parameters: EnforcedStyle.
28
- # SupportedStyles: space, no_space
29
- Layout/SpaceAroundEqualsInParameterDefault:
30
- Exclude:
31
- - 'lib/webhook_system/base_event.rb'
32
- - 'lib/webhook_system/job.rb'
33
-
34
- # Offense count: 1
35
- # This cop supports safe auto-correction (--auto-correct).
36
- # Configuration parameters: AllowForAlignment, EnforcedStyleForExponentOperator.
37
- # SupportedStylesForExponentOperator: space, no_space
38
- Layout/SpaceAroundOperators:
18
+ # This cop supports unsafe autocorrection (--autocorrect-all).
19
+ # Configuration parameters: AllowSafeAssignment.
20
+ Lint/AssignmentInCondition:
39
21
  Exclude:
40
22
  - 'lib/webhook_system/subscription.rb'
41
23
 
42
- # Offense count: 2
43
- # This cop supports safe auto-correction (--auto-correct).
44
- # Configuration parameters: EnforcedStyle.
45
- # SupportedStyles: require_no_space, require_space
46
- Layout/SpaceInLambdaLiteral:
47
- Exclude:
48
- - 'lib/webhook_system/subscription.rb'
49
-
50
- # Offense count: 2
51
- # This cop supports safe auto-correction (--auto-correct).
52
- Lint/DeprecatedOpenSSLConstant:
53
- Exclude:
54
- - 'lib/webhook_system/encoder.rb'
55
-
56
24
  # Offense count: 1
57
- # This cop supports unsafe auto-correction (--auto-correct-all).
58
- Lint/NonDeterministicRequireOrder:
25
+ # This cop supports unsafe autocorrection (--autocorrect-all).
26
+ Lint/RedundantDirGlobSort:
59
27
  Exclude:
60
28
  - 'spec/spec_helper.rb'
61
29
 
@@ -64,114 +32,183 @@ Lint/UnreachableCode:
64
32
  Exclude:
65
33
  - 'lib/webhook_system/job.rb'
66
34
 
67
- # Offense count: 11
68
- # Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
69
- # IgnoredMethods: refine
70
- Metrics/BlockLength:
71
- Max: 112
35
+ # Offense count: 3
36
+ # Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
37
+ Metrics/MethodLength:
38
+ Max: 18
72
39
 
73
40
  # Offense count: 1
74
41
  # Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
75
- # AllowedNames: at, by, db, id, in, io, ip, of, on, os, pp, to
42
+ # AllowedNames: as, at, by, cc, db, id, if, in, io, ip, of, on, os, pp, to
76
43
  Naming/MethodParameterName:
77
44
  Exclude:
78
45
  - 'lib/webhook_system/encoder.rb'
79
46
 
80
47
  # Offense count: 1
81
- # This cop supports safe auto-correction (--auto-correct).
48
+ # This cop supports safe autocorrection (--autocorrect).
82
49
  # Configuration parameters: PreferredName.
83
50
  Naming/RescuedExceptionsVariableName:
84
51
  Exclude:
85
- - 'lib/webhook_system/job.rb'
52
+ - 'spec/support/rails_seven_one.rb'
86
53
 
87
- # Offense count: 2
88
- # This cop supports safe auto-correction (--auto-correct).
89
- Security/JSONLoad:
54
+ # Offense count: 9
55
+ # Configuration parameters: Prefixes, AllowedPatterns.
56
+ # Prefixes: when, with, without
57
+ RSpec/ContextWording:
90
58
  Exclude:
91
- - 'lib/webhook_system/encoder.rb'
59
+ - 'spec/encoder_spec.rb'
60
+ - 'spec/event_log_spec.rb'
61
+ - 'spec/event_spec.rb'
92
62
 
93
63
  # Offense count: 1
94
- # This cop supports safe auto-correction (--auto-correct).
95
- Style/FileWrite:
64
+ # Configuration parameters: IgnoredMetadata.
65
+ RSpec/DescribeClass:
96
66
  Exclude:
97
- - 'Rakefile'
67
+ - 'spec/dispatching_events_spec.rb'
98
68
 
99
- # This cop supports safe auto-correction (--auto-correct).
100
- # Configuration parameters: EnforcedStyle.
101
- # SupportedStyles: literals, strict
102
- Style/MutableConstant:
69
+ # Offense count: 7
70
+ # Configuration parameters: CountAsOne.
71
+ RSpec/ExampleLength:
72
+ Max: 24
73
+
74
+ # Offense count: 4
75
+ # Configuration parameters: Include, CustomTransform, IgnoreMethods, SpecSuffixOnly.
76
+ # Include: **/*_spec*rb*, **/spec/**/*
77
+ RSpec/FilePath:
103
78
  Exclude:
104
- - 'lib/webhook_system/subscription.rb'
79
+ - 'spec/encoder_spec.rb'
80
+ - 'spec/event_log_spec.rb'
81
+ - 'spec/event_spec.rb'
82
+ - 'spec/models_spec.rb'
105
83
 
106
- # Offense count: 1
107
- # This cop supports unsafe auto-correction (--auto-correct-all).
108
- # Configuration parameters: EnforcedStyle, IgnoredMethods.
109
- # SupportedStyles: predicate, comparison
110
- Style/NumericPredicate:
84
+ # Offense count: 11
85
+ # Configuration parameters: Max, AllowedIdentifiers, AllowedPatterns.
86
+ RSpec/IndexedLet:
111
87
  Exclude:
112
- - 'spec/**/*'
113
- - 'lib/webhook_system/job.rb'
88
+ - 'spec/dispatching_events_spec.rb'
89
+ - 'spec/encoder_spec.rb'
90
+ - 'spec/event_spec.rb'
91
+ - 'spec/integration_spec.rb'
92
+ - 'spec/models_spec.rb'
114
93
 
115
- # Offense count: 1
116
- # This cop supports safe auto-correction (--auto-correct).
117
- Style/Proc:
94
+ # Offense count: 3
95
+ RSpec/LetSetup:
118
96
  Exclude:
119
- - 'lib/webhook_system/subscription.rb'
97
+ - 'spec/dispatching_events_spec.rb'
98
+ - 'spec/integration_spec.rb'
120
99
 
121
- # Offense count: 1
122
- # This cop supports safe auto-correction (--auto-correct).
123
- Style/RedundantSelf:
100
+ # Offense count: 3
101
+ # This cop supports safe autocorrection (--autocorrect).
102
+ RSpec/MatchArray:
124
103
  Exclude:
125
- - 'lib/webhook_system/base_event.rb'
104
+ - 'spec/models_spec.rb'
126
105
 
127
- # Offense count: 1
128
- # This cop supports safe auto-correction (--auto-correct).
129
- # Configuration parameters: EnforcedStyle, AllowInnerSlashes.
130
- # SupportedStyles: slashes, percent_r, mixed
131
- Style/RegexpLiteral:
106
+ # Offense count: 10
107
+ # This cop supports safe autocorrection (--autocorrect).
108
+ # Configuration parameters: EnforcedStyle.
109
+ # SupportedStyles: hash, symbol
110
+ RSpec/MetadataStyle:
132
111
  Exclude:
133
112
  - 'spec/dispatching_events_spec.rb'
113
+ - 'spec/encoder_spec.rb'
114
+ - 'spec/event_log_spec.rb'
115
+ - 'spec/event_spec.rb'
116
+ - 'spec/integration_spec.rb'
117
+ - 'spec/models_spec.rb'
118
+ - 'spec/spec_helper.rb'
119
+
120
+ # Offense count: 15
121
+ # Configuration parameters: AllowSubject.
122
+ RSpec/MultipleMemoizedHelpers:
123
+ Max: 8
124
+
125
+ # Offense count: 9
126
+ # Configuration parameters: EnforcedStyle, IgnoreSharedExamples.
127
+ # SupportedStyles: always, named_only
128
+ RSpec/NamedSubject:
129
+ Exclude:
130
+ - 'spec/event_log_spec.rb'
131
+
132
+ # Offense count: 3
133
+ # Configuration parameters: AllowedGroups.
134
+ RSpec/NestedGroups:
135
+ Max: 4
136
+
137
+ # Offense count: 3
138
+ # This cop supports safe autocorrection (--autocorrect).
139
+ RSpec/ScatteredSetup:
140
+ Exclude:
141
+ - 'spec/models_spec.rb'
142
+
143
+ # Offense count: 4
144
+ # Configuration parameters: Include, CustomTransform, IgnoreMethods, IgnoreMetadata.
145
+ # Include: **/*_spec.rb
146
+ RSpec/SpecFilePathFormat:
147
+ Exclude:
148
+ - 'spec/encoder_spec.rb'
149
+ - 'spec/event_log_spec.rb'
150
+ - 'spec/event_spec.rb'
151
+ - 'spec/models_spec.rb'
134
152
 
135
153
  # Offense count: 2
136
- # This cop supports safe auto-correction (--auto-correct).
137
- Style/StderrPuts:
154
+ # Configuration parameters: IgnoreNameless, IgnoreSymbolicNames.
155
+ RSpec/VerifiedDoubles:
138
156
  Exclude:
139
- - 'Rakefile'
157
+ - 'spec/event_log_spec.rb'
140
158
 
141
159
  # Offense count: 1
142
- # This cop supports unsafe auto-correction (--auto-correct-all).
143
- # Configuration parameters: Mode.
144
- Style/StringConcatenation:
160
+ # This cop supports unsafe autocorrection (--autocorrect-all).
161
+ Rails/RedundantPresenceValidationOnBelongsTo:
145
162
  Exclude:
163
+ - 'lib/webhook_system/event_log.rb'
164
+
165
+ # Offense count: 3
166
+ # Configuration parameters: AllowedConstants.
167
+ Style/Documentation:
168
+ Exclude:
169
+ - 'lib/webhook_system.rb'
146
170
  - 'lib/webhook_system/encoder.rb'
171
+ - 'lib/webhook_system/subscription_topic.rb'
172
+ - 'spec/support/rails_seven_one.rb'
147
173
 
148
- # Offense count: 4
149
- # This cop supports safe auto-correction (--auto-correct).
150
- # Configuration parameters: MinSize.
151
- # SupportedStyles: percent, brackets
152
- Style/SymbolArray:
153
- EnforcedStyle: brackets
174
+ # Offense count: 1
175
+ # This cop supports safe autocorrection (--autocorrect).
176
+ Style/MultilineIfModifier:
177
+ Exclude:
178
+ - 'spec/support/rails_seven_one.rb'
154
179
 
155
- # Offense count: 3
156
- # This cop supports safe auto-correction (--auto-correct).
157
- # Configuration parameters: EnforcedStyleForMultiline.
158
- # SupportedStylesForMultiline: comma, consistent_comma, no_comma
159
- Style/TrailingCommaInArrayLiteral:
180
+ # Offense count: 1
181
+ # This cop supports safe autocorrection (--autocorrect).
182
+ # Configuration parameters: EnforcedStyle, AllowedCompactTypes.
183
+ # SupportedStyles: compact, exploded
184
+ Style/RaiseArgs:
185
+ Exclude:
186
+ - 'spec/support/rails_seven_one.rb'
187
+
188
+ # Offense count: 1
189
+ # This cop supports safe autocorrection (--autocorrect).
190
+ Style/RedundantConstantBase:
160
191
  Exclude:
161
- - 'spec/dispatching_events_spec.rb'
162
192
  - 'spec/event_spec.rb'
163
- - 'spec/integration_spec.rb'
164
193
 
165
- # Offense count: 14
166
- # This cop supports safe auto-correction (--auto-correct).
167
- # Configuration parameters: EnforcedStyleForMultiline.
168
- # SupportedStylesForMultiline: comma, consistent_comma, no_comma
169
- Style/TrailingCommaInHashLiteral:
194
+ # Offense count: 1
195
+ # This cop supports safe autocorrection (--autocorrect).
196
+ Style/RedundantFreeze:
170
197
  Exclude:
171
- - 'lib/webhook_system/base_event.rb'
172
- - 'lib/webhook_system/encoder.rb'
173
- - 'lib/webhook_system/event_log.rb'
174
198
  - 'lib/webhook_system/subscription.rb'
175
- - 'spec/encoder_spec.rb'
176
- - 'spec/event_spec.rb'
177
- - 'spec/integration_spec.rb'
199
+
200
+ # Offense count: 1
201
+ # This cop supports safe autocorrection (--autocorrect).
202
+ # Configuration parameters: EnforcedStyle, AllowInnerSlashes.
203
+ # SupportedStyles: slashes, percent_r, mixed
204
+ Style/RegexpLiteral:
205
+ Exclude:
206
+ - 'spec/dispatching_events_spec.rb'
207
+
208
+ # Offense count: 1
209
+ # This cop supports safe autocorrection (--autocorrect).
210
+ # Configuration parameters: EnforcedStyle.
211
+ # SupportedStyles: implicit, explicit
212
+ Style/RescueStandardError:
213
+ Exclude:
214
+ - 'spec/support/rails_seven_one.rb'
data/Gemfile CHANGED
@@ -1,4 +1,3 @@
1
1
  source 'https://rubygems.org'
2
- gem 'pr_comet', git: 'https://github.com/mathieujobin/pr_comet', branch: 'git-status'
3
2
 
4
3
  gemspec
data/Rakefile CHANGED
@@ -20,23 +20,21 @@ task :styleguide do
20
20
  require 'faraday'
21
21
  require 'pry'
22
22
  base = "https://raw.githubusercontent.com/payrollhero/styleguide/master/"
23
- files = %w{
23
+ files = %w[
24
24
  .rubocop.hound.yml
25
25
  .rubocop.yml
26
26
  .codeclimate.yml
27
- }
27
+ ]
28
28
  files.each do |file|
29
29
  puts "Fetching #{file} ..."
30
30
  url = "#{base}#{file}"
31
31
  rsp = Faraday.get(url)
32
32
  unless rsp.status == 200
33
- $stderr.puts "failing fetching: #{url}"
34
- $stderr.puts " response: #{rsp.status}: #{rsp.body}"
33
+ warn "failing fetching: #{url}"
34
+ warn " response: #{rsp.status}: #{rsp.body}"
35
35
  exit 1
36
36
  end
37
- File.open(file, "w") do |fh|
38
- fh.write(rsp.body)
39
- end
37
+ File.write(file, rsp.body)
40
38
  end
41
39
  end
42
40
 
@@ -2,8 +2,8 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
+ gem "minitest"
5
6
  gem "rails", "~> 6.1.4"
6
7
  gem "sqlite3"
7
- gem "minitest"
8
8
 
9
9
  gemspec path: "../"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source "https://rubygems.org"
2
4
 
3
5
  gem "rails", "~> 7.0.2"
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "active_attr", "~> 0.16" # git: "https://github.com/mathieujobin/active_attr", branch: "rails-7.1-support"
6
+ gem "rails", "~> 7.1.1"
7
+ gem "sqlite3"
8
+
9
+ gemspec path: "../"
@@ -14,13 +14,17 @@ module WebhookSystem
14
14
  attr_reader :event_id
15
15
 
16
16
  def event_name
17
+ # :nocov:
17
18
  mesg = "class #{self.class.name} must implement abstract method `#{self.class.name}#event_name()'."
18
19
  raise with_caller_backtrace(RuntimeError.new(mesg), 2)
20
+ # :nocov:
19
21
  end
20
22
 
21
23
  def payload_attributes
24
+ # :nocov:
22
25
  mesg = "class #{self.class.name} must implement abstract method `#{self.class.name}#payload_attributes()'."
23
26
  raise with_caller_backtrace(RuntimeError.new(mesg), 2)
27
+ # :nocov:
24
28
  end
25
29
 
26
30
  def as_json
@@ -36,25 +40,28 @@ module WebhookSystem
36
40
  end
37
41
 
38
42
  def self.key_is_reserved?(key)
39
- key.to_s.in? %w(event event_id)
43
+ key.to_s.in? %w[event event_id]
40
44
  end
41
45
 
42
46
  def self.dispatch(args)
43
- WebhookSystem::Subscription.global.dispatch self.build(args)
47
+ WebhookSystem::Subscription.global.dispatch build(args)
44
48
  end
45
49
 
46
50
  private
47
51
 
48
- def with_caller_backtrace(exception, backtrack=2)
49
- exception.set_backtrace(caller[backtrack..-1])
52
+ def with_caller_backtrace(exception, backtrack = 2)
53
+ # :nocov:
54
+ exception.set_backtrace(caller[backtrack..])
50
55
  exception
56
+ # :nocov:
51
57
  end
52
58
 
53
59
  def validate_attribute_name(key)
54
- if self.class.key_is_reserved?(key)
55
- message = "#{self.class.name} should not be defining an attribute named #{key} since its reserved"
56
- raise ArgumentError, message
57
- end
60
+ return unless self.class.key_is_reserved?(key)
61
+
62
+ message = "#{self.class.name} should not be defining an attribute named #{key} since its reserved"
63
+ raise ArgumentError, message
64
+
58
65
  end
59
66
 
60
67
  def each_attribute(&block)
@@ -66,7 +73,9 @@ module WebhookSystem
66
73
  when Hash
67
74
  payload_attributes.each(&block)
68
75
  else
76
+ # :nocov:
69
77
  raise ArgumentError, "don't know how to deal with payload_attributes: #{payload_attributes.inspect}"
78
+ # :nocov:
70
79
  end
71
80
  end
72
81
  end
@@ -28,9 +28,7 @@ module WebhookSystem
28
28
  format = format_for_content_type(headers.fetch('Content-Type'))
29
29
 
30
30
  payload_signature = hub_signature(payload_string, secret_string)
31
- if signature && signature != payload_signature
32
- raise DecodingError, 'signature mismatch'
33
- end
31
+ raise DecodingError, 'signature mismatch' if signature && signature != payload_signature
34
32
 
35
33
  Payload.decode(payload_string, secret: secret_string, format: format)
36
34
  end
@@ -41,7 +39,7 @@ module WebhookSystem
41
39
  def content_type_format_map
42
40
  {
43
41
  'base64+aes256' => 'application/json; base64+aes256',
44
- 'json' => 'application/json'
42
+ 'json' => 'application/json',
45
43
  }
46
44
  end
47
45
 
@@ -54,7 +52,7 @@ module WebhookSystem
54
52
  end
55
53
 
56
54
  def hub_signature(payload_string, secret)
57
- 'sha1=' + OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha1'), secret, payload_string)
55
+ "sha1=#{OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha1'), secret, payload_string)}"
58
56
  end
59
57
  end
60
58
  end
@@ -73,7 +71,7 @@ module WebhookSystem
73
71
  end
74
72
 
75
73
  def decode(response_body, secret:, format:)
76
- payload = JSON.load(response_body)
74
+ payload = JSON.parse(response_body)
77
75
 
78
76
  case format
79
77
  when 'base64+aes256'
@@ -88,7 +86,7 @@ module WebhookSystem
88
86
  private
89
87
 
90
88
  def encode_aes(payload, secret)
91
- cipher = OpenSSL::Cipher::AES256.new(:CBC)
89
+ cipher = OpenSSL::Cipher.new('aes-256-cbc')
92
90
  cipher.encrypt
93
91
  iv = cipher.random_iv
94
92
  cipher.key = key_from_secret(iv, secret)
@@ -105,13 +103,13 @@ module WebhookSystem
105
103
  encoded = Base64.decode64(payload['payload'])
106
104
  iv = Base64.decode64(payload['iv'])
107
105
 
108
- cipher = OpenSSL::Cipher::AES256.new(:CBC)
106
+ cipher = OpenSSL::Cipher.new('aes-256-cbc')
109
107
  cipher.decrypt
110
108
  cipher.iv = iv
111
109
  cipher.key = key_from_secret(iv, secret)
112
110
  decoded = cipher.update(encoded) + cipher.final
113
111
 
114
- JSON.load(decoded)
112
+ JSON.parse(decoded)
115
113
  rescue OpenSSL::Cipher::CipherError
116
114
  raise DecodingError, 'Decoding Failed, probably mismatched secret'
117
115
  end