lhc 13.0.0 → 14.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rubocop.yml +15 -0
  3. data/.github/workflows/test.yml +15 -0
  4. data/.rubocop.yml +344 -19
  5. data/.ruby-version +1 -1
  6. data/README.md +44 -0
  7. data/Rakefile +3 -3
  8. data/lhc.gemspec +3 -1
  9. data/lib/lhc.rb +59 -59
  10. data/lib/lhc/concerns/lhc/fix_invalid_encoding_concern.rb +1 -0
  11. data/lib/lhc/config.rb +3 -0
  12. data/lib/lhc/endpoint.rb +3 -0
  13. data/lib/lhc/error.rb +5 -1
  14. data/lib/lhc/interceptor.rb +4 -0
  15. data/lib/lhc/interceptors.rb +1 -0
  16. data/lib/lhc/interceptors/auth.rb +3 -4
  17. data/lib/lhc/interceptors/caching.rb +14 -3
  18. data/lib/lhc/interceptors/logging.rb +2 -0
  19. data/lib/lhc/interceptors/monitoring.rb +46 -11
  20. data/lib/lhc/interceptors/retry.rb +2 -0
  21. data/lib/lhc/interceptors/rollbar.rb +1 -0
  22. data/lib/lhc/interceptors/throttle.rb +7 -2
  23. data/lib/lhc/interceptors/zipkin.rb +2 -0
  24. data/lib/lhc/request.rb +13 -3
  25. data/lib/lhc/response.rb +1 -0
  26. data/lib/lhc/response/data.rb +1 -1
  27. data/lib/lhc/version.rb +1 -1
  28. data/spec/error/to_s_spec.rb +7 -2
  29. data/spec/formats/multipart_spec.rb +2 -2
  30. data/spec/formats/plain_spec.rb +1 -1
  31. data/spec/interceptors/after_response_spec.rb +1 -1
  32. data/spec/interceptors/caching/main_spec.rb +2 -2
  33. data/spec/interceptors/caching/multilevel_cache_spec.rb +2 -1
  34. data/spec/interceptors/define_spec.rb +1 -0
  35. data/spec/interceptors/monitoring/caching_spec.rb +66 -0
  36. data/spec/interceptors/response_competition_spec.rb +2 -2
  37. data/spec/interceptors/return_response_spec.rb +2 -2
  38. data/spec/response/data_spec.rb +2 -2
  39. data/spec/support/zipkin_mock.rb +1 -0
  40. metadata +27 -21
  41. data/.rubocop.localch.yml +0 -325
  42. data/cider-ci.yml +0 -5
  43. data/cider-ci/bin/bundle +0 -51
  44. data/cider-ci/bin/ruby_install +0 -8
  45. data/cider-ci/bin/ruby_version +0 -25
  46. data/cider-ci/jobs/rspec-activesupport-5.yml +0 -27
  47. data/cider-ci/jobs/rspec-activesupport-6.yml +0 -28
  48. data/cider-ci/jobs/rubocop.yml +0 -18
  49. data/cider-ci/task_components/bundle.yml +0 -22
  50. data/cider-ci/task_components/rspec.yml +0 -36
  51. data/cider-ci/task_components/rubocop.yml +0 -29
  52. data/cider-ci/task_components/ruby.yml +0 -15
@@ -12,7 +12,7 @@ describe LHC do
12
12
 
13
13
  def before_request
14
14
  if @@cached
15
- return LHC::Response.new(Typhoeus::Response.new(response_body: 'Im served from local cache'), nil)
15
+ return LHC::Response.new(Typhoeus::Response.new(response_code: 200, return_code: :ok, response_body: 'Im served from local cache'), nil)
16
16
  end
17
17
  end
18
18
  end
@@ -22,7 +22,7 @@ describe LHC do
22
22
 
23
23
  def before_request
24
24
  if request.response.nil?
25
- return LHC::Response.new(Typhoeus::Response.new(response_body: 'Im served from remote cache'), nil)
25
+ return LHC::Response.new(Typhoeus::Response.new(response_code: 200, return_code: :ok, response_body: 'Im served from remote cache'), nil)
26
26
  end
27
27
  end
28
28
  end
@@ -8,7 +8,7 @@ describe LHC do
8
8
  class CacheInterceptor < LHC::Interceptor
9
9
 
10
10
  def before_request
11
- LHC::Response.new(Typhoeus::Response.new(response_body: 'Im served from cache'), nil)
11
+ LHC::Response.new(Typhoeus::Response.new(response_code: 200, return_code: :ok, response_body: 'Im served from cache'), nil)
12
12
  end
13
13
  end
14
14
  LHC.configure { |c| c.interceptors = [CacheInterceptor] }
@@ -23,7 +23,7 @@ describe LHC do
23
23
  before(:each) do
24
24
  class AnotherInterceptor < LHC::Interceptor
25
25
  def before_request
26
- LHC::Response.new(Typhoeus::Response.new({}), nil)
26
+ LHC::Response.new(Typhoeus::Response.new(response_code: 200, return_code: :ok), nil)
27
27
  end
28
28
  end
29
29
  end
@@ -75,9 +75,9 @@ describe LHC::Response do
75
75
  it 'does not throw a stack level to deep issue when accessing data in a rescue context' do
76
76
  begin
77
77
  LHC.get('http://listings')
78
- rescue LHC::Error => error
78
+ rescue LHC::Error => e
79
79
  expect(
80
- error.response.request.response.data.meta.errors.detect { |item| item.code == 2000 }.msg
80
+ e.response.request.response.data.meta.errors.detect { |item| item.code == 2000 }.msg
81
81
  ).to eq 'I like to hide error messages (this is meta).'
82
82
  end
83
83
  end
@@ -3,6 +3,7 @@
3
3
  module ZipkinTracer
4
4
  class TraceContainer
5
5
  attr_reader :trace_id, :parent_id, :span_id, :sampled, :flags
6
+
6
7
  class << self
7
8
  attr_accessor :current
8
9
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lhc
3
3
  version: !ruby/object:Gem::Version
4
- version: 13.0.0
4
+ version: 14.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - https://github.com/local-ch/lhc/contributors
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-28 00:00:00.000000000 Z
11
+ date: 2021-05-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -142,14 +142,28 @@ dependencies:
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: 0.57.1
145
+ version: '1.0'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: 0.57.1
152
+ version: '1.0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rubocop-performance
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '1.0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '1.0'
153
167
  - !ruby/object:Gem::Dependency
154
168
  name: rubocop-rspec
155
169
  requirement: !ruby/object:Gem::Requirement
@@ -202,8 +216,9 @@ executables: []
202
216
  extensions: []
203
217
  extra_rdoc_files: []
204
218
  files:
219
+ - ".github/workflows/rubocop.yml"
220
+ - ".github/workflows/test.yml"
205
221
  - ".gitignore"
206
- - ".rubocop.localch.yml"
207
222
  - ".rubocop.yml"
208
223
  - ".ruby-version"
209
224
  - Gemfile
@@ -212,17 +227,6 @@ files:
212
227
  - LICENSE
213
228
  - README.md
214
229
  - Rakefile
215
- - cider-ci.yml
216
- - cider-ci/bin/bundle
217
- - cider-ci/bin/ruby_install
218
- - cider-ci/bin/ruby_version
219
- - cider-ci/jobs/rspec-activesupport-5.yml
220
- - cider-ci/jobs/rspec-activesupport-6.yml
221
- - cider-ci/jobs/rubocop.yml
222
- - cider-ci/task_components/bundle.yml
223
- - cider-ci/task_components/rspec.yml
224
- - cider-ci/task_components/rubocop.yml
225
- - cider-ci/task_components/ruby.yml
226
230
  - friday.yml
227
231
  - lhc.gemspec
228
232
  - lib/core_ext/hash/deep_transform_values.rb
@@ -357,6 +361,7 @@ files:
357
361
  - spec/interceptors/define_spec.rb
358
362
  - spec/interceptors/dup_spec.rb
359
363
  - spec/interceptors/logging/main_spec.rb
364
+ - spec/interceptors/monitoring/caching_spec.rb
360
365
  - spec/interceptors/monitoring/main_spec.rb
361
366
  - spec/interceptors/prometheus_spec.rb
362
367
  - spec/interceptors/response_competition_spec.rb
@@ -402,7 +407,7 @@ homepage: https://github.com/local-ch/lhc
402
407
  licenses:
403
408
  - GPL-3.0
404
409
  metadata: {}
405
- post_install_message:
410
+ post_install_message:
406
411
  rdoc_options: []
407
412
  require_paths:
408
413
  - lib
@@ -410,7 +415,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
410
415
  requirements:
411
416
  - - ">="
412
417
  - !ruby/object:Gem::Version
413
- version: '0'
418
+ version: '2.7'
414
419
  required_rubygems_version: !ruby/object:Gem::Requirement
415
420
  requirements:
416
421
  - - ">="
@@ -418,8 +423,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
418
423
  version: '0'
419
424
  requirements:
420
425
  - Ruby >= 2.0.0
421
- rubygems_version: 3.0.6
422
- signing_key:
426
+ rubygems_version: 3.1.4
427
+ signing_key:
423
428
  specification_version: 4
424
429
  summary: Advanced HTTP Client for Ruby, fueled with interceptors
425
430
  test_files:
@@ -511,6 +516,7 @@ test_files:
511
516
  - spec/interceptors/define_spec.rb
512
517
  - spec/interceptors/dup_spec.rb
513
518
  - spec/interceptors/logging/main_spec.rb
519
+ - spec/interceptors/monitoring/caching_spec.rb
514
520
  - spec/interceptors/monitoring/main_spec.rb
515
521
  - spec/interceptors/prometheus_spec.rb
516
522
  - spec/interceptors/response_competition_spec.rb
data/.rubocop.localch.yml DELETED
@@ -1,325 +0,0 @@
1
- # This is master rubocop configuration.
2
- # DO NOT EDIT THIS FILE - it WILL be overwriten on every config update
3
- AllCops:
4
- TargetRubyVersion: 2.3
5
- DisplayCopNames: true
6
- DisplayStyleGuide: true
7
- Exclude:
8
- - 'db/**/*'
9
- - 'script/**/*'
10
- - 'vendor/bundle/**/*'
11
- - 'vendor/assets/**/*'
12
- - 'bin/**/*'
13
- - 'config/unicorn.rb'
14
- - 'config/compass.rb'
15
- - 'Rakefile'
16
- - 'app/controllers/error_trap_controller.rb'
17
- - 'app/controllers/hsts_controller.rb'
18
- - 'spec/lib/util_spec.rb'
19
-
20
- Rails:
21
- Enabled: true
22
-
23
- require:
24
- - rubocop-rspec
25
-
26
- Bundler/OrderedGems:
27
- Enabled: false
28
-
29
- Lint/HandleExceptions:
30
- Exclude:
31
- - spec/**/*
32
-
33
- Lint/UriEscapeUnescape:
34
- Enabled: false
35
-
36
- Style/RescueStandardError:
37
- Enabled: false
38
-
39
- Metrics/LineLength:
40
- Enabled: false
41
-
42
- Metrics/AbcSize:
43
- Enabled: false
44
-
45
- Metrics/MethodLength:
46
- Enabled: false
47
-
48
- Metrics/CyclomaticComplexity:
49
- Enabled: false
50
-
51
- Metrics/PerceivedComplexity:
52
- Enabled: false
53
-
54
- Metrics/ClassLength:
55
- Enabled: false
56
-
57
- Metrics/ModuleLength:
58
- Enabled: false
59
-
60
- Metrics/BlockLength:
61
- Enabled: false
62
-
63
- Metrics/ParameterLists:
64
- Enabled: false
65
-
66
- Metrics/BlockNesting:
67
- Enabled: false
68
-
69
- Performance/StringReplacement:
70
- Enabled: false
71
-
72
- Performance/TimesMap:
73
- Enabled: false
74
-
75
- Performance/RedundantBlockCall:
76
- Enabled: false
77
-
78
- Performance/RedundantMatch:
79
- Enabled: false
80
-
81
- Performance/RedundantMerge:
82
- Enabled: false
83
-
84
- Performance/Casecmp:
85
- Enabled: false
86
-
87
- Layout/MultilineOperationIndentation:
88
- EnforcedStyle: indented
89
-
90
- Layout/DotPosition:
91
- EnforcedStyle: leading
92
-
93
- Layout/AlignParameters:
94
- Enabled: false
95
-
96
- Layout/EmptyLinesAroundClassBody:
97
- Enabled: false
98
-
99
- Layout/IndentArray:
100
- EnforcedStyle: consistent
101
-
102
- Layout/MultilineMethodCallIndentation:
103
- EnforcedStyle: indented
104
-
105
- Layout/MultilineMethodCallBraceLayout:
106
- EnforcedStyle: symmetrical
107
-
108
- Layout/EmptyLinesAroundBlockBody:
109
- EnforcedStyle: no_empty_lines
110
-
111
- Layout/IndentHeredoc:
112
- Enabled: false
113
-
114
- Layout/MultilineArrayBraceLayout:
115
- EnforcedStyle: symmetrical
116
-
117
- Layout/MultilineHashBraceLayout:
118
- EnforcedStyle: symmetrical
119
-
120
- Style/StringLiterals:
121
- Enabled: false
122
-
123
- Style/RegexpLiteral:
124
- Exclude:
125
- - spec/**/*
126
-
127
- Style/NumericLiterals:
128
- Enabled: false
129
-
130
- Style/WordArray:
131
- Enabled: false
132
-
133
- Style/Next:
134
- Enabled: false
135
-
136
- Style/PercentLiteralDelimiters:
137
- Enabled: false
138
-
139
- Style/GlobalVars:
140
- Enabled: false
141
-
142
- Style/CommentAnnotation:
143
- Enabled: false
144
-
145
- Style/SymbolProc:
146
- Enabled: false
147
-
148
- Style/DoubleNegation:
149
- Enabled: false
150
-
151
- Style/FormatString:
152
- Enabled: false
153
-
154
- Style/AsciiComments:
155
- Enabled: false
156
-
157
- Style/BarePercentLiterals:
158
- Enabled: false
159
-
160
- Style/SingleLineBlockParams:
161
- Enabled: false
162
-
163
- Style/MultilineBlockChain:
164
- Enabled: false
165
-
166
- Style/UnneededCapitalW:
167
- Enabled: false
168
-
169
- Style/UnneededPercentQ:
170
- Enabled: false
171
-
172
- Style/BlockDelimiters:
173
- Exclude:
174
- - spec/**/*
175
-
176
- Style/BracesAroundHashParameters:
177
- EnforcedStyle: context_dependent
178
-
179
- Style/IfUnlessModifier:
180
- Enabled: false
181
-
182
- Style/ClassAndModuleChildren:
183
- Enabled: false
184
-
185
- Style/Documentation:
186
- Enabled: false
187
-
188
- Style/GuardClause:
189
- Enabled: false
190
-
191
- Naming/AccessorMethodName:
192
- Exclude:
193
- - spec/support/pages/**/*
194
-
195
- Style/NegatedIf:
196
- Enabled: false
197
-
198
- Style/MutableConstant:
199
- Enabled: false
200
-
201
- Style/ConditionalAssignment:
202
- Enabled: false
203
-
204
- Style/Lambda:
205
- Enabled: false
206
-
207
- Style/FrozenStringLiteralComment:
208
- Enabled: false
209
-
210
- Style/SymbolArray:
211
- Enabled: false
212
-
213
- Style/HashSyntax:
214
- EnforcedStyle: ruby19
215
-
216
- Style/FormatStringToken:
217
- Enabled: false
218
-
219
- Style/EmptyMethod:
220
- EnforcedStyle: expanded
221
-
222
- Style/TernaryParentheses:
223
- EnforcedStyle: require_parentheses_when_complex
224
-
225
- Naming/VariableNumber:
226
- Enabled: false
227
-
228
- Style/PerlBackrefs:
229
- Enabled: false
230
-
231
- Style/RegexpLiteral:
232
- AllowInnerSlashes: false
233
-
234
- Style/BlockComments:
235
- Enabled: false
236
-
237
- Style/RedundantParentheses:
238
- Enabled: false
239
-
240
- Naming/FileName:
241
- Exclude:
242
- - Gemfile
243
- - Brewfile
244
- - Guardfile
245
-
246
- Style/NumericPredicate:
247
- Enabled: false
248
-
249
- RSpec/DescribeClass:
250
- Exclude:
251
- - spec/views/**/*
252
- - spec/routing/**/*
253
- - spec/requests/**/*
254
- - spec/features/**/*
255
-
256
- RSpec/FilePath:
257
- Enabled: false
258
-
259
- RSpec/NamedSubject:
260
- Enabled: false
261
-
262
- RSpec/MultipleExpectations:
263
- Enabled: false
264
-
265
- RSpec/ExampleLength:
266
- Enabled: false
267
-
268
- RSpec/HookArgument:
269
- EnforcedStyle: implicit
270
-
271
- RSpec/MessageSpies:
272
- EnforcedStyle: receive
273
-
274
- RSpec/NestedGroups:
275
- Enabled: false
276
-
277
- RSpec/VerifiedDoubles:
278
- Enabled: false
279
-
280
- RSpec/LeadingSubject:
281
- Enabled: false
282
-
283
- RSpec/ExpectInHook:
284
- Enabled: false
285
-
286
- RSpec/ReturnFromStub:
287
- Enabled: false
288
-
289
- RSpec/SubjectStub:
290
- Enabled: false
291
-
292
- RSpec/EmptyLineAfterSubject:
293
- Enabled: false
294
-
295
- RSpec/LetSetup:
296
- Enabled: false
297
-
298
- RSpec/ImplicitExpect:
299
- EnforcedStyle: is_expected
300
-
301
- RSpec/ScatteredLet:
302
- Enabled: false
303
-
304
- RSpec/ContextWording:
305
- Enabled: false
306
-
307
- Rails/Output:
308
- Exclude:
309
- - 'config/application.rb'
310
- - 'config/initializers/asset_manifest_warning.rb'
311
-
312
- Rails/DynamicFindBy:
313
- Enabled: false
314
-
315
- Rails/Presence:
316
- Enabled: false
317
-
318
- Capybara/CurrentPathExpectation:
319
- Enabled: false
320
-
321
- Naming/UncommunicativeMethodParamName:
322
- Enabled: false
323
-
324
- Style/ExpandPathArguments:
325
- Enabled: false