nxt_http_client 1.0.1 → 1.0.2
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 +4 -4
- data/CHANGELOG.md +5 -0
- data/Gemfile.lock +6 -6
- data/README.md +32 -29
- data/lib/nxt_http_client/error.rb +1 -2
- data/lib/nxt_http_client/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aebfa8039d0d512c58392115ba1e7362a47acd59311e032e30b518db87b7a3ea
|
4
|
+
data.tar.gz: 29f82bfb73f10f8006351a7a9f0c61d58ca734f1b118df0fe4f6d7bee1c97caa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 66d043d9c7dfde0e562d38fb42be8d338facb674feae608b85aa69b03320c19426351b8c636e2bba2c0107dfe217a2a04ca5f9205d701c0e9ebfb5d82b74c858
|
7
|
+
data.tar.gz: 31321953bc43d2d9f19bf46a0ae5e3e2bbd223c4d13eb29c28024a07882588f31530839c378915531d1fa54f56668490bb8abe55528b7782ca364cfecf375130
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
nxt_http_client (1.0.
|
4
|
+
nxt_http_client (1.0.2)
|
5
5
|
activesupport (~> 6.0)
|
6
6
|
nxt_registry
|
7
7
|
typhoeus
|
@@ -9,7 +9,7 @@ PATH
|
|
9
9
|
GEM
|
10
10
|
remote: https://rubygems.org/
|
11
11
|
specs:
|
12
|
-
activesupport (6.1.1)
|
12
|
+
activesupport (6.1.2.1)
|
13
13
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
14
14
|
i18n (>= 1.6, < 2)
|
15
15
|
minitest (>= 5.1)
|
@@ -26,7 +26,7 @@ GEM
|
|
26
26
|
ffi (>= 1.3.0)
|
27
27
|
ffi (1.14.2)
|
28
28
|
hashdiff (1.0.1)
|
29
|
-
i18n (1.8.
|
29
|
+
i18n (1.8.9)
|
30
30
|
concurrent-ruby (~> 1.0)
|
31
31
|
method_source (1.0.0)
|
32
32
|
minitest (5.14.3)
|
@@ -35,7 +35,7 @@ GEM
|
|
35
35
|
nxt_vcr_harness (0.1.4)
|
36
36
|
rspec (~> 3.0)
|
37
37
|
vcr (~> 6.0)
|
38
|
-
pry (0.
|
38
|
+
pry (0.14.0)
|
39
39
|
coderay (~> 1.1)
|
40
40
|
method_source (~> 1.0)
|
41
41
|
public_suffix (4.0.6)
|
@@ -57,7 +57,7 @@ GEM
|
|
57
57
|
rspec-support (3.10.2)
|
58
58
|
rspec_junit_formatter (0.4.1)
|
59
59
|
rspec-core (>= 2, < 4, != 2.12.0)
|
60
|
-
timecop (0.9.
|
60
|
+
timecop (0.9.4)
|
61
61
|
typhoeus (1.4.0)
|
62
62
|
ethon (>= 0.9.0)
|
63
63
|
tzinfo (2.0.4)
|
@@ -86,4 +86,4 @@ DEPENDENCIES
|
|
86
86
|
webmock
|
87
87
|
|
88
88
|
BUNDLED WITH
|
89
|
-
2.2.
|
89
|
+
2.2.7
|
data/README.md
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# NxtHttpClient
|
2
2
|
|
3
3
|
Build http clients with ease. NxtHttpClient is a simple DSL on top of the [typhoeus](https://github.com/typhoeus/typhoeus)
|
4
|
-
gem. NxtHttpClient mostly provides you a simple configuration functionality to setup http connections on the class level.
|
4
|
+
gem. NxtHttpClient mostly provides you a simple configuration functionality to setup http connections on the class level.
|
5
5
|
Furthermore it's mostly a callback framework that allows you to seamlessly handle your responses. Since it's is just a simple
|
6
|
-
layer on top of [typhoeus](https://github.com/typhoeus/typhoeus) it also allows to access and configure the original
|
6
|
+
layer on top of [typhoeus](https://github.com/typhoeus/typhoeus) it also allows to access and configure the original
|
7
7
|
`Typhoeus::Request` before making a request.
|
8
8
|
|
9
9
|
|
@@ -40,14 +40,14 @@ class UserFetcher < Client
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
private
|
45
45
|
|
46
46
|
attr_reader :url
|
47
47
|
end
|
48
48
|
```
|
49
49
|
|
50
|
-
In order to setup a shared configuration you would therefore setup a client base class. The configuration and any
|
50
|
+
In order to setup a shared configuration you would therefore setup a client base class. The configuration and any
|
51
51
|
response handler or callbacks you setup in your base class are then inherited to your concrete client implementations.
|
52
52
|
|
53
53
|
```ruby
|
@@ -59,13 +59,13 @@ class Client < NxtHttpClient
|
|
59
59
|
method: :get,
|
60
60
|
followlocation: true
|
61
61
|
)
|
62
|
-
config.x_request_id_proc = -> { ('a'..'z').to_a.shuffle.take(10).join }
|
62
|
+
config.x_request_id_proc = -> { ('a'..'z').to_a.shuffle.take(10).join }
|
63
63
|
end
|
64
|
-
|
64
|
+
|
65
65
|
log do |info|
|
66
66
|
Rails.logger.info(info)
|
67
67
|
end
|
68
|
-
|
68
|
+
|
69
69
|
response_handler do |handler|
|
70
70
|
handler.on(:error) do |response|
|
71
71
|
Raven.extra_context(error_details: error.to_h)
|
@@ -77,7 +77,7 @@ end
|
|
77
77
|
|
78
78
|
### HTTP Methods
|
79
79
|
|
80
|
-
In order to build a request and execute it NxtHttpClient implements all http standard methods.
|
80
|
+
In order to build a request and execute it NxtHttpClient implements all http standard methods.
|
81
81
|
|
82
82
|
```ruby
|
83
83
|
class Client < NxtHttpClient
|
@@ -111,20 +111,20 @@ end
|
|
111
111
|
|
112
112
|
### configure
|
113
113
|
|
114
|
-
Register your default request options on the class level. Available options are `request_options` that are passed
|
114
|
+
Register your default request options on the class level. Available options are `request_options` that are passed
|
115
115
|
directly to the underlying Typhoeus Request. Then there is `base_url` and `x_request_id_proc`.
|
116
116
|
|
117
117
|
### response_handler
|
118
118
|
|
119
|
-
Register a default response handler for your client class. You can reconfigure or overwrite this in subclasses and
|
120
|
-
on the instance level.
|
119
|
+
Register a default response handler for your client class. You can reconfigure or overwrite this in subclasses and
|
120
|
+
on the instance level.
|
121
121
|
|
122
122
|
### fire
|
123
123
|
|
124
|
-
All http methods internally are delegate to `fire('uri', **request_options)`. Since `fire` is a public method you can
|
124
|
+
All http methods internally are delegate to `fire('uri', **request_options)`. Since `fire` is a public method you can
|
125
125
|
also use it to fire your requests and use the response handler to register callbacks for specific responses.
|
126
126
|
|
127
|
-
Registered callbacks have a hierarchy by which they are executed. Specific callbacks will come first
|
127
|
+
Registered callbacks have a hierarchy by which they are executed. Specific callbacks will come first
|
128
128
|
and more common callbacks will come later in case none of the specific callbacks matched. It this is not what you want you
|
129
129
|
can simply put the logic you need into one common callback that is called in any case. You can also use strings with wildcards
|
130
130
|
to match a group of response by status code. `handler.on('4**') { ... }` basically would match all client errors.
|
@@ -138,33 +138,33 @@ fire('uri', **request_options) do |handler|
|
|
138
138
|
handler.on(:success) do |response|
|
139
139
|
response.body
|
140
140
|
end
|
141
|
-
|
141
|
+
|
142
142
|
handler.on(:timed_out) do |response|
|
143
143
|
raise StandardError, 'Timeout'
|
144
144
|
end
|
145
|
-
|
145
|
+
|
146
146
|
handler.on(:error) do |response|
|
147
147
|
raise StandardError, 'This is bad'
|
148
148
|
end
|
149
|
-
|
149
|
+
|
150
150
|
handler.on(:others) do |response|
|
151
151
|
raise StandardError, 'Other problem'
|
152
152
|
end
|
153
|
-
|
153
|
+
|
154
154
|
handler.on(:headers) do |response|
|
155
155
|
# This is already executed when the headers are received
|
156
156
|
end
|
157
|
-
|
157
|
+
|
158
158
|
handler.on(:body) do |chunk|
|
159
|
-
# Use this to stream the body in chunks
|
159
|
+
# Use this to stream the body in chunks
|
160
160
|
end
|
161
161
|
end
|
162
|
-
```
|
162
|
+
```
|
163
163
|
|
164
164
|
### Callbacks around fire
|
165
165
|
|
166
|
-
Next to implementing callbacks for handling responses there are also callbacks around making requests. Note tht you can
|
167
|
-
have as many callbacks as you want. In case you need to reset them because you do not want to inherit them from your
|
166
|
+
Next to implementing callbacks for handling responses there are also callbacks around making requests. Note tht you can
|
167
|
+
have as many callbacks as you want. In case you need to reset them because you do not want to inherit them from your
|
168
168
|
parent class (might be a smell when you need to...) you can reset callbacks via `clear_fire_callbacks` on the class level.
|
169
169
|
|
170
170
|
```ruby
|
@@ -190,9 +190,12 @@ end
|
|
190
190
|
|
191
191
|
NxtHttpClient also provides an error base class that you might want to use as the base for your client errors.
|
192
192
|
It comes with a nice set of useful methods. You can ask the error for the request and response options since it
|
193
|
-
requires the response for initialization. Furthermore it has a handy `to_h` method that provides you all info about
|
193
|
+
requires the response for initialization. Furthermore it has a handy `to_h` method that provides you all info about
|
194
194
|
the request and response.
|
195
195
|
|
196
|
+
#### Timeouts
|
197
|
+
NxtHttpClient::Error exposes the `timed_out?` method from `Typhoeus::Response`, so you can check if an error is raised due to a timeout. This is useful when setting a custom timeout value in your configuration.
|
198
|
+
|
196
199
|
### Logging
|
197
200
|
|
198
201
|
NxtHttpClient also comes with a log method on the class level that you can pass a proc if you want to log your request.
|
@@ -218,23 +221,23 @@ end
|
|
218
221
|
|
219
222
|
### Caching
|
220
223
|
|
221
|
-
Typhoeus ships with caching built in. Checkout the [typhoeus](https://github.com/typhoeus/typhoeus) docu to figure out
|
222
|
-
how to set it up. NxtHttpClient builds some functionality on top of this and offer to cache requests within the current
|
223
|
-
thread or globally. You can simply make use of it by providing one of the caching options `:thread` or`:global` as config
|
224
|
-
request option or the actual request options when building the request.
|
224
|
+
Typhoeus ships with caching built in. Checkout the [typhoeus](https://github.com/typhoeus/typhoeus) docu to figure out
|
225
|
+
how to set it up. NxtHttpClient builds some functionality on top of this and offer to cache requests within the current
|
226
|
+
thread or globally. You can simply make use of it by providing one of the caching options `:thread` or`:global` as config
|
227
|
+
request option or the actual request options when building the request.
|
225
228
|
|
226
229
|
```ruby
|
227
230
|
class Client < NxtHttpClient::Client
|
228
231
|
configure do |config|
|
229
232
|
config.request_options = { cache: :thread }
|
230
233
|
end
|
231
|
-
|
234
|
+
|
232
235
|
response_handler do |handler|
|
233
236
|
handler.on(200) do |response|
|
234
237
|
# ...
|
235
238
|
end
|
236
239
|
end
|
237
|
-
|
240
|
+
|
238
241
|
def call
|
239
242
|
get('.../url.com', cache: :thread) # configure caching per request level
|
240
243
|
end
|
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nxt_http_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andreas Robecke
|
8
8
|
- Nils Sommer
|
9
9
|
- Raphael Kallensee
|
10
10
|
- Luetfi Demirci
|
11
|
-
autorequire:
|
11
|
+
autorequire:
|
12
12
|
bindir: exe
|
13
13
|
cert_chain: []
|
14
|
-
date: 2021-02-
|
14
|
+
date: 2021-02-22 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: typhoeus
|
@@ -233,7 +233,7 @@ metadata:
|
|
233
233
|
allowed_push_host: https://rubygems.org
|
234
234
|
homepage_uri: https://github.com/nxt-insurance
|
235
235
|
source_code_uri: https://github.com/nxt-insurance/nxt_http_client
|
236
|
-
post_install_message:
|
236
|
+
post_install_message:
|
237
237
|
rdoc_options: []
|
238
238
|
require_paths:
|
239
239
|
- lib
|
@@ -248,8 +248,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
248
248
|
- !ruby/object:Gem::Version
|
249
249
|
version: '0'
|
250
250
|
requirements: []
|
251
|
-
rubygems_version: 3.
|
252
|
-
signing_key:
|
251
|
+
rubygems_version: 3.1.4
|
252
|
+
signing_key:
|
253
253
|
specification_version: 4
|
254
254
|
summary: NxtHttpClinet is a simple DSL on top the typhoeus http gem
|
255
255
|
test_files: []
|