lhc 6.2.0 → 6.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7caf5dc6e24346cc42e287a8bac832cd81011c5a
4
- data.tar.gz: 17bd6df84e9fce4212921c8348b2053031f62da1
3
+ metadata.gz: 503f2e88095de04d6f071fd2285459f106ff2f7d
4
+ data.tar.gz: 1e7c8bd5c1878d11ce293208c43f7886714891bf
5
5
  SHA512:
6
- metadata.gz: cb849054f246290fe96388ed66abaf3ded5dc8d2a00b7eb7afd857efbfd3d9e820bf0014780c296a37f865c2665cee1b399f1a6d9bc549d48092177cb4885908
7
- data.tar.gz: 2f3a0b17c338a1c36dca14e1fa2b3cfc3d1897263cc373a9912a4da9717c5a909677cc4c0fd987ef7e010c964ad2529ae4df816db31384560be826bc28d2256e
6
+ metadata.gz: 0e8fbabecb039bfe29377cdd7ee30f52aea980d459918953f5df9b1e92b48c9e15ce15392122dc1dabb9934ca3fc8ac5fb44d2c6f64a1545996bebe24ca6d12e
7
+ data.tar.gz: a21700e4b7979715066c2659bc492fee013dee54a0471427f6c6dac414c3ff94855bb1b289f3c6900d36714e7200b105e52ec1f46067aeb16909d6a837458d05
data/README.md CHANGED
@@ -139,7 +139,7 @@ Anything but a response code indicating success (2**) throws an exception.
139
139
 
140
140
  → [Read more about exceptions](docs/exceptions.md)
141
141
 
142
- ## Custom error handling
142
+ ### Custom error handling
143
143
 
144
144
  You can provide custom error handlers to handle errors happening during the request.
145
145
 
@@ -153,6 +153,20 @@ response = LHC.get('http://something', error_handler: handler)
153
153
  response.data.name # 'unknown'
154
154
  ```
155
155
 
156
+ ### Ignore certain errors
157
+
158
+ As it's discouraged to rescue errors and then don't handle them (ruby styleguide),
159
+ but you often want to continue working with `nil`, LHC provides the `ignored_errors` option.
160
+
161
+ Errors listed in this option will not be raised and will leave the `response.body` and `response.data` to stay `nil`.
162
+
163
+ ```ruby
164
+ response = LHC.get('http://something', ignored_errors: [LHC::NotFound])
165
+
166
+ response.body # nil
167
+ response.data # nil
168
+ ```
169
+
156
170
  ## Interceptors
157
171
 
158
172
  To monitor and manipulate the http communication done with LHC, you can define interceptors.
@@ -8,9 +8,10 @@ class LHC::Request
8
8
 
9
9
  TYPHOEUS_OPTIONS ||= [:params, :method, :body, :headers, :follow_location]
10
10
 
11
- attr_accessor :response, :options, :raw, :format, :error_handler
11
+ attr_accessor :response, :options, :raw, :format, :error_handler, :errors_ignored
12
12
 
13
13
  def initialize(options, self_executing = true)
14
+ self.errors_ignored = options.fetch(:ignored_errors, [])
14
15
  self.options = options.deep_dup || {}
15
16
  self.error_handler = options.delete :error_handler
16
17
  use_configured_endpoint!
@@ -101,12 +102,16 @@ class LHC::Request
101
102
  end
102
103
 
103
104
  def handle_error(response)
105
+ return if errors_ignored.include?(error)
104
106
  throw_error(response) unless error_handler
105
107
  response.body_replacement = error_handler.call(response)
106
108
  end
107
109
 
110
+ def error
111
+ @error ||= LHC::Error.find(response)
112
+ end
113
+
108
114
  def throw_error(response)
109
- error = LHC::Error.find(response)
110
115
  fail error.new(error, response)
111
116
  end
112
117
  end
@@ -20,7 +20,7 @@ class LHC::Response
20
20
  end
21
21
 
22
22
  def data
23
- @data ||= LHC::Response::Data.new(self)
23
+ @data ||= body.present? ? LHC::Response::Data.new(self) : nil
24
24
  end
25
25
 
26
26
  def [](key)
@@ -28,7 +28,7 @@ class LHC::Response
28
28
  end
29
29
 
30
30
  def body
31
- body_replacement || raw.body
31
+ body_replacement || raw.body.presence
32
32
  end
33
33
 
34
34
  # Provides response time in ms.
@@ -1,3 +1,3 @@
1
1
  module LHC
2
- VERSION ||= "6.2.0"
2
+ VERSION ||= "6.3.0"
3
3
  end
@@ -0,0 +1,13 @@
1
+ require 'rails_helper'
2
+
3
+ describe LHC::Request do
4
+ context 'ignore errors' do
5
+ it 'raises errors for anything but 2XX response codes' do
6
+ stub_request(:get, 'http://local.ch').to_return(status: 404)
7
+ response = LHC.get('http://local.ch', ignored_errors: [LHC::NotFound])
8
+ expect(response.body).to eq nil
9
+ expect(response.data).to eq nil
10
+ expect(response.success?).to eq false
11
+ end
12
+ end
13
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lhc
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.2.0
4
+ version: 6.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - https://github.com/local-ch/lhc/contributors
@@ -278,6 +278,7 @@ files:
278
278
  - spec/request/encoding_spec.rb
279
279
  - spec/request/error_handling_spec.rb
280
280
  - spec/request/headers_spec.rb
281
+ - spec/request/ignore_errors_spec.rb
281
282
  - spec/request/option_dup_spec.rb
282
283
  - spec/request/parallel_requests_spec.rb
283
284
  - spec/request/request_without_rails_spec.rb
@@ -320,7 +321,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
320
321
  requirements:
321
322
  - Ruby >= 2.0.0
322
323
  rubyforge_project:
323
- rubygems_version: 2.6.8
324
+ rubygems_version: 2.6.12
324
325
  signing_key:
325
326
  specification_version: 4
326
327
  summary: LocalHttpClient
@@ -405,6 +406,7 @@ test_files:
405
406
  - spec/request/encoding_spec.rb
406
407
  - spec/request/error_handling_spec.rb
407
408
  - spec/request/headers_spec.rb
409
+ - spec/request/ignore_errors_spec.rb
408
410
  - spec/request/option_dup_spec.rb
409
411
  - spec/request/parallel_requests_spec.rb
410
412
  - spec/request/request_without_rails_spec.rb