lhc 15.1.1 → 15.2.0

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: 301499c3239741a748386c3e33d552611f2817f2880579b3df9e320b336db894
4
- data.tar.gz: 27c61057ca12aa70076e0fbe71da8cf8f0eac225420dcdd11ba297336aea85e8
3
+ metadata.gz: 00b791317124325a44a99ca08c5cfabb611affd67d38603476151c106b84d924
4
+ data.tar.gz: 198d4f707ab907c7209ea1f8bbf41452f46fb3079dbf14a73f243ed37b09d6dc
5
5
  SHA512:
6
- metadata.gz: 890dd068ed2902de6990b1b90ef5082f4f6d0c26e65022db14157615dd858f7302a8419b8457f6da403f3423aabdfa13f0838a748846f7f93e13339c0415eca6
7
- data.tar.gz: e66683421af741d105294a5eb5fb33f26dbab024653b51647f3597e3256cd2bb114202d1599e4f0019f6157b08123afea794c68ddddd6f286518a99476c9dc9d
6
+ metadata.gz: f6955a082a0e31f564f7b4c6243bfd8274e684cb392702f38d81f044d9ccbc9ff20085428d2529e6a48bd3f194ff69c99686c7744ce681ac8234942f1d4830f5
7
+ data.tar.gz: 5b11847bfb5f8a9e00797e7c8d87dbd5f9784c6f60cb926d414723fc16faf0fba871ffc6917e63475a6a6a3ae8b49b112b7c6f8fc716a6ee61deaa42d2a040f0
data/.rubocop.yml CHANGED
@@ -26,6 +26,9 @@ require:
26
26
  Bundler/OrderedGems:
27
27
  Enabled: false
28
28
 
29
+ Gemspec/RequireMFA:
30
+ Enabled: false
31
+
29
32
  Lint/SuppressedException:
30
33
  Exclude:
31
34
  - spec/**/*
@@ -260,7 +263,7 @@ Style/CaseLikeIf:
260
263
  Enabled: false
261
264
 
262
265
  Style/HashEachMethods:
263
- Enabled: false
266
+ Enabled: false
264
267
 
265
268
  Style/HashConversion: # (new in 1.10)
266
269
  Enabled: false
@@ -268,6 +271,9 @@ Style/HashConversion: # (new in 1.10)
268
271
  Style/NilLambda: # (new in 1.3)
269
272
  Enabled: false
270
273
 
274
+ Style/OpenStructUse:
275
+ Enabled: false
276
+
271
277
  RSpec/DescribeClass:
272
278
  Exclude:
273
279
  - spec/views/**/*
data/lhc.gemspec CHANGED
@@ -15,8 +15,7 @@ Gem::Specification.new do |s|
15
15
  s.summary = 'Advanced HTTP Client for Ruby, fueled with interceptors'
16
16
  s.description = 'LHC is an extended/advanced HTTP client. Implementing basic http-communication enhancements like interceptors, exception handling, format handling, accessing response data, configuring endpoints and placeholders and fully compatible, RFC-compliant URL-template support.'
17
17
 
18
- s.files = `git ls-files`.split("\n")
19
- s.test_files = `git ls-files -- spec/*`.split("\n")
18
+ s.files = `git ls-files`.split("\n")
20
19
  s.require_paths = ['lib']
21
20
 
22
21
  s.requirements << 'Ruby >= 2.0.0'
@@ -36,6 +35,7 @@ Gem::Specification.new do |s|
36
35
  s.add_development_dependency 'rubocop', '~> 1.0'
37
36
  s.add_development_dependency 'rubocop-performance', '~> 1.0'
38
37
  s.add_development_dependency 'rubocop-rspec', '~> 1.26.0'
38
+ s.add_development_dependency 'sprockets-rails'
39
39
  s.add_development_dependency 'timecop'
40
40
  s.add_development_dependency 'webmock'
41
41
 
@@ -39,7 +39,7 @@ class LHC::Auth < LHC::Interceptor
39
39
  set_bearer_authorization_header(token)
40
40
  end
41
41
 
42
- # rubocop:disable Style/AccessorMethodName
42
+ # rubocop:disable Naming/AccessorMethodName
43
43
  def set_authorization_header(value)
44
44
  request.headers['Authorization'] = value
45
45
  end
@@ -50,10 +50,13 @@ class LHC::Auth < LHC::Interceptor
50
50
  end
51
51
 
52
52
  def set_bearer_authorization_header(token)
53
- request.options[:auth].merge!(bearer_token: token)
53
+ auth_options = request.options[:auth] || {}
54
+ auth_options.merge!(bearer_token: token)
55
+ request.options[:auth] = auth_options unless request.options.key?(:auth)
56
+
54
57
  set_authorization_header("Bearer #{token}")
55
58
  end
56
- # rubocop:enable Style/AccessorMethodName
59
+ # rubocop:enable Naming/AccessorMethodName
57
60
 
58
61
  def reauthenticate!
59
62
  # refresh token and update header
@@ -7,8 +7,8 @@ class LHC::Rollbar < LHC::Interceptor
7
7
  include LHC::FixInvalidEncodingConcern
8
8
 
9
9
  def after_response
10
- return unless Object.const_defined?('Rollbar')
11
- return if response.success?
10
+ return unless Object.const_defined?(:Rollbar)
11
+ return unless report?
12
12
 
13
13
  request = response.request
14
14
  additional_params = request.options.fetch(:rollbar, {})
@@ -29,9 +29,18 @@ class LHC::Rollbar < LHC::Interceptor
29
29
  }.merge additional_params
30
30
  begin
31
31
  Rollbar.warning("Status: #{response.code} URL: #{request.url}", data)
32
- rescue Encoding::UndefinedConversionError
32
+ rescue JSON::GeneratorError, Encoding::UndefinedConversionError
33
33
  sanitized_data = data.deep_transform_values { |value| self.class.fix_invalid_encoding(value) }
34
34
  Rollbar.warning("Status: #{response.code} URL: #{request.url}", sanitized_data)
35
35
  end
36
36
  end
37
+
38
+ private
39
+
40
+ def report?
41
+ return false if response.success?
42
+ return false if response.request.error_ignored?
43
+
44
+ true
45
+ end
37
46
  end
data/lib/lhc/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LHC
4
- VERSION ||= '15.1.1'
4
+ VERSION ||= '15.2.0'
5
5
  end
@@ -15,7 +15,7 @@ describe LHC::Error do
15
15
  expect { "#{valid} #{invalid}" }.to raise_error Encoding::CompatibilityError
16
16
  end
17
17
  it 'to_json on an array raises an error' do
18
- expect { [valid, invalid].to_json }.to raise_error Encoding::UndefinedConversionError
18
+ expect { [valid, invalid].to_json }.to raise_error JSON::GeneratorError
19
19
  end
20
20
 
21
21
  it 'to_s on a hash does not raise an error' do
@@ -23,7 +23,7 @@ describe LHC::Error do
23
23
  end
24
24
 
25
25
  it 'to_json on a hash does raise an error' do
26
- expect { { valid: valid, invalid: invalid }.to_json }.to raise_error Encoding::UndefinedConversionError
26
+ expect { { valid: valid, invalid: invalid }.to_json }.to raise_error JSON::GeneratorError
27
27
  end
28
28
  end
29
29
 
@@ -27,6 +27,27 @@ describe LHC::Auth do
27
27
  expect(auth_suceeding_after_recovery).to have_been_made.once
28
28
  end
29
29
 
30
+ context 'without `auth` options' do
31
+ let(:headers) do
32
+ { 'Authorization' => "Bearer #{initial_token}" }
33
+ end
34
+
35
+ before do
36
+ LHC::Auth.refresh_client_token = -> { refresh_token }
37
+ end
38
+
39
+ after do
40
+ LHC::Auth.refresh_client_token = -> { nil }
41
+ end
42
+
43
+ it 'recovery is attempted' do
44
+ LHC.config.endpoint(:local, 'http://local.ch')
45
+ # the retried request (with updated Bearer), that should work
46
+ LHC.get(:local, { headers: headers })
47
+ expect(auth_suceeding_after_recovery).to have_been_made.once
48
+ end
49
+ end
50
+
30
51
  it "recovery is not attempted again when the request has reauthenticated: true " do
31
52
  LHC.config.endpoint(:local, 'http://local.ch', auth: options.merge(reauthenticated: true))
32
53
  expect { LHC.get(:local) }.to raise_error(LHC::Unauthorized)
@@ -9,7 +9,7 @@ describe LHC::Rollbar do
9
9
 
10
10
  context 'Rollbar is undefined' do
11
11
  before(:each) do
12
- Object.send(:remove_const, 'Rollbar') if Object.const_defined?('Rollbar')
12
+ Object.send(:remove_const, 'Rollbar') if Object.const_defined?(:Rollbar)
13
13
  end
14
14
  it 'does not report' do
15
15
  stub_request(:get, 'http://local.ch').to_return(status: 400)
@@ -65,5 +65,24 @@ describe LHC::Rollbar do
65
65
  request: hash_including(url: anything, method: anything, headers: hash_including(private_key: LHC::Scrubber::SCRUB_DISPLAY), params: { api_key: LHC::Scrubber::SCRUB_DISPLAY })
66
66
  )
67
67
  end
68
+
69
+ context 'ignored errors' do
70
+ it 'does not report to rollbar if the error is ignored' do
71
+ stub_request(:get, 'http://local.ch').to_return(status: 404)
72
+ LHC.get('http://local.ch', ignore: [LHC::NotFound])
73
+ expect(::Rollbar).not_to have_received(:warning)
74
+ end
75
+
76
+ it 'does report to rollbar' do
77
+ stub_request(:get, 'http://local.ch').to_return(status: 400)
78
+ expect(-> { LHC.get('http://local.ch', ignore: [LHC::NotFound]) }).to raise_error LHC::BadRequest
79
+ expect(::Rollbar).not_to have_received(:warning)
80
+ .with(
81
+ 'Status: 400 URL: http://local.ch',
82
+ response: hash_including(body: anything, code: anything, headers: anything, time: anything, timeout?: anything),
83
+ request: hash_including(url: anything, method: anything, headers: hash_including(private_key: LHC::Scrubber::SCRUB_DISPLAY), params: { api_key: LHC::Scrubber::SCRUB_DISPLAY })
84
+ )
85
+ end
86
+ end
68
87
  end
69
88
  end
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: 15.1.1
4
+ version: 15.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - https://github.com/local-ch/lhc/contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-01 00:00:00.000000000 Z
11
+ date: 2022-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -192,6 +192,20 @@ dependencies:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
194
  version: 1.26.0
195
+ - !ruby/object:Gem::Dependency
196
+ name: sprockets-rails
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
195
209
  - !ruby/object:Gem::Dependency
196
210
  name: timecop
197
211
  requirement: !ruby/object:Gem::Requirement
@@ -453,139 +467,4 @@ rubygems_version: 3.1.4
453
467
  signing_key:
454
468
  specification_version: 4
455
469
  summary: Advanced HTTP Client for Ruby, fueled with interceptors
456
- test_files:
457
- - spec/basic_methods/delete_spec.rb
458
- - spec/basic_methods/get_spec.rb
459
- - spec/basic_methods/post_spec.rb
460
- - spec/basic_methods/put_spec.rb
461
- - spec/basic_methods/request_spec.rb
462
- - spec/basic_methods/request_without_rails_spec.rb
463
- - spec/config/endpoints_spec.rb
464
- - spec/config/placeholders_spec.rb
465
- - spec/config/scrubs_spec.rb
466
- - spec/core_ext/hash/deep_transform_values_spec.rb
467
- - spec/dummy/README.rdoc
468
- - spec/dummy/Rakefile
469
- - spec/dummy/app/assets/config/manifest.js
470
- - spec/dummy/app/assets/images/.keep
471
- - spec/dummy/app/assets/javascripts/application.js
472
- - spec/dummy/app/assets/stylesheets/application.css
473
- - spec/dummy/app/controllers/application_controller.rb
474
- - spec/dummy/app/controllers/concerns/.keep
475
- - spec/dummy/app/helpers/application_helper.rb
476
- - spec/dummy/app/mailers/.keep
477
- - spec/dummy/app/models/.keep
478
- - spec/dummy/app/models/concerns/.keep
479
- - spec/dummy/app/views/layouts/application.html.erb
480
- - spec/dummy/bin/bundle
481
- - spec/dummy/bin/rails
482
- - spec/dummy/bin/rake
483
- - spec/dummy/config.ru
484
- - spec/dummy/config/application.rb
485
- - spec/dummy/config/boot.rb
486
- - spec/dummy/config/environment.rb
487
- - spec/dummy/config/environments/development.rb
488
- - spec/dummy/config/environments/production.rb
489
- - spec/dummy/config/environments/test.rb
490
- - spec/dummy/config/initializers/assets.rb
491
- - spec/dummy/config/initializers/backtrace_silencers.rb
492
- - spec/dummy/config/initializers/cookies_serializer.rb
493
- - spec/dummy/config/initializers/filter_parameter_logging.rb
494
- - spec/dummy/config/initializers/inflections.rb
495
- - spec/dummy/config/initializers/mime_types.rb
496
- - spec/dummy/config/initializers/session_store.rb
497
- - spec/dummy/config/initializers/wrap_parameters.rb
498
- - spec/dummy/config/locales/en.yml
499
- - spec/dummy/config/routes.rb
500
- - spec/dummy/config/secrets.yml
501
- - spec/dummy/lib/assets/.keep
502
- - spec/dummy/log/.keep
503
- - spec/dummy/public/404.html
504
- - spec/dummy/public/422.html
505
- - spec/dummy/public/500.html
506
- - spec/dummy/public/favicon.ico
507
- - spec/dummy/tmp/cache/.gitkeep
508
- - spec/endpoint/compile_spec.rb
509
- - spec/endpoint/match_spec.rb
510
- - spec/endpoint/placeholders_spec.rb
511
- - spec/endpoint/remove_interpolated_params_spec.rb
512
- - spec/endpoint/values_as_params_spec.rb
513
- - spec/error/dup_spec.rb
514
- - spec/error/find_spec.rb
515
- - spec/error/response_spec.rb
516
- - spec/error/timeout_spec.rb
517
- - spec/error/to_s_spec.rb
518
- - spec/formats/form_spec.rb
519
- - spec/formats/json_spec.rb
520
- - spec/formats/multipart_spec.rb
521
- - spec/formats/plain_spec.rb
522
- - spec/interceptors/after_request_spec.rb
523
- - spec/interceptors/after_response_spec.rb
524
- - spec/interceptors/auth/basic_auth_spec.rb
525
- - spec/interceptors/auth/bearer_spec.rb
526
- - spec/interceptors/auth/body_spec.rb
527
- - spec/interceptors/auth/long_basic_auth_credentials_spec.rb
528
- - spec/interceptors/auth/no_instance_var_for_options_spec.rb
529
- - spec/interceptors/auth/reauthentication_configuration_spec.rb
530
- - spec/interceptors/auth/reauthentication_spec.rb
531
- - spec/interceptors/before_request_spec.rb
532
- - spec/interceptors/before_response_spec.rb
533
- - spec/interceptors/caching/hydra_spec.rb
534
- - spec/interceptors/caching/main_spec.rb
535
- - spec/interceptors/caching/methods_spec.rb
536
- - spec/interceptors/caching/multilevel_cache_spec.rb
537
- - spec/interceptors/caching/options_spec.rb
538
- - spec/interceptors/caching/parameters_spec.rb
539
- - spec/interceptors/caching/response_status_spec.rb
540
- - spec/interceptors/caching/to_cache_spec.rb
541
- - spec/interceptors/default_interceptors_spec.rb
542
- - spec/interceptors/default_timeout/main_spec.rb
543
- - spec/interceptors/define_spec.rb
544
- - spec/interceptors/dup_spec.rb
545
- - spec/interceptors/logging/main_spec.rb
546
- - spec/interceptors/monitoring/caching_spec.rb
547
- - spec/interceptors/monitoring/main_spec.rb
548
- - spec/interceptors/prometheus_spec.rb
549
- - spec/interceptors/response_competition_spec.rb
550
- - spec/interceptors/retry/main_spec.rb
551
- - spec/interceptors/return_response_spec.rb
552
- - spec/interceptors/rollbar/invalid_encoding_spec.rb
553
- - spec/interceptors/rollbar/main_spec.rb
554
- - spec/interceptors/throttle/main_spec.rb
555
- - spec/interceptors/throttle/reset_track_spec.rb
556
- - spec/interceptors/zipkin/distributed_tracing_spec.rb
557
- - spec/rails_helper.rb
558
- - spec/request/body_spec.rb
559
- - spec/request/encoding_spec.rb
560
- - spec/request/error_handling_spec.rb
561
- - spec/request/headers_spec.rb
562
- - spec/request/ignore_errors_spec.rb
563
- - spec/request/option_dup_spec.rb
564
- - spec/request/parallel_requests_spec.rb
565
- - spec/request/params_encoding_spec.rb
566
- - spec/request/request_without_rails_spec.rb
567
- - spec/request/scrubbed_headers_spec.rb
568
- - spec/request/scrubbed_options_spec.rb
569
- - spec/request/scrubbed_params_spec.rb
570
- - spec/request/url_patterns_spec.rb
571
- - spec/request/user_agent_spec.rb
572
- - spec/request/user_agent_without_rails_spec.rb
573
- - spec/response/body_spec.rb
574
- - spec/response/code_spec.rb
575
- - spec/response/data_accessor_spec.rb
576
- - spec/response/data_spec.rb
577
- - spec/response/effective_url_spec.rb
578
- - spec/response/headers_spec.rb
579
- - spec/response/options_spec.rb
580
- - spec/response/scrubbed_options_spec.rb
581
- - spec/response/success_spec.rb
582
- - spec/response/time_spec.rb
583
- - spec/spec_helper.rb
584
- - spec/support/fixtures/json/feedback.json
585
- - spec/support/fixtures/json/feedbacks.json
586
- - spec/support/fixtures/json/localina_content_ad.json
587
- - spec/support/load_json.rb
588
- - spec/support/reset_config.rb
589
- - spec/support/zipkin_mock.rb
590
- - spec/timeouts/no_signal_spec.rb
591
- - spec/timeouts/timings_spec.rb
470
+ test_files: []