api_client_base 1.5.0 → 1.6.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 +4 -4
- data/.gitignore +2 -0
- data/.travis.yml +2 -2
- data/CHANGELOG.md +5 -0
- data/Gemfile +3 -1
- data/README.md +4 -0
- data/api_client_base.gemspec +2 -2
- data/lib/api_client_base.rb +1 -0
- data/lib/api_client_base/request.rb +18 -11
- data/lib/api_client_base/services/build_typhoeus_options.rb +26 -0
- data/lib/api_client_base/version.rb +1 -1
- metadata +10 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4944507aab7a50bfa722d2ee9c712467c515dcb8fe030087ad98fd0f417a1129
|
4
|
+
data.tar.gz: 05662a54b48237e43bf69f07d1f21c505e3d6782a3f5cc9814b9109666ef26ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d8179471df1171101b4701e16c1d8473c941c37e0a3eca87ed33fc02c908808a50cb4412186997baa77fade63ca963a6072d87920f7aade180856a07e1a5d41b
|
7
|
+
data.tar.gz: e840dee362e45038426e39958ab265787d3659c5248a95929f4346355786eae0f6c95a07960ae696f7a8946dc86691fd70fff3e915b6aa2840f3afa98302240d
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file.
|
|
4
4
|
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
5
5
|
and this project adheres to [Semantic Versioning](http://semver.org/).
|
6
6
|
|
7
|
+
## [1.6.0] - 2020-04-09
|
8
|
+
### Added
|
9
|
+
- Move http-related code to Request#run. This is the one that should be overridden, instead of call, since `#call` calls other methods like `before_call`
|
10
|
+
- Set `#proxy` attribute to requests. This is passed to Typhoeus if present
|
11
|
+
|
7
12
|
## [1.5.0] - 2019-04-03
|
8
13
|
### Added
|
9
14
|
- Allow developer to define `before_call` in requests to execute code
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -197,6 +197,9 @@ client = MyGem::Client.new #...
|
|
197
197
|
client.get_user(user_id: nil) # -> this raises an ArgumentError "[user_id: 'must be filled']"
|
198
198
|
```
|
199
199
|
|
200
|
+
##### Proxy
|
201
|
+
Requests automatically have `proxy`. If set and you are relying on using Typhoeus, proxy will be passed on and used by Typhoeus.
|
202
|
+
|
200
203
|
#### Responses
|
201
204
|
|
202
205
|
```ruby
|
@@ -206,6 +209,7 @@ module MyGem
|
|
206
209
|
# - has `#status` method that is delegated to `raw_response.status`
|
207
210
|
# - has `#code` method to get the response's code
|
208
211
|
# - has `#raw_response` which is a Typhoeus response object
|
212
|
+
# - has `#success` which is delegated to `raw_response.success?`. May be accessed via `#success?`
|
209
213
|
|
210
214
|
# You're encouraged to use Virtus attributes to extract information cleanly
|
211
215
|
attribute :id, Integer, lazy: true, default: :default_id
|
data/api_client_base.gemspec
CHANGED
@@ -34,11 +34,11 @@ Gem::Specification.new do |spec|
|
|
34
34
|
spec.add_dependency "virtus", ">= 1.0"
|
35
35
|
spec.add_dependency "gem_config", ">= 0.3.1"
|
36
36
|
|
37
|
-
spec.add_development_dependency "bundler", "~> 1
|
37
|
+
spec.add_development_dependency "bundler", "~> 2.1"
|
38
38
|
spec.add_development_dependency "rake", "~> 10.0"
|
39
39
|
spec.add_development_dependency "rspec", "~> 3.0"
|
40
40
|
spec.add_development_dependency "virtus-matchers"
|
41
41
|
spec.add_development_dependency "vcr", "~> 3.0"
|
42
42
|
spec.add_development_dependency "webmock"
|
43
|
-
spec.add_development_dependency "dry-validation"
|
43
|
+
spec.add_development_dependency "dry-validation", "< 1.0"
|
44
44
|
end
|
data/lib/api_client_base.rb
CHANGED
@@ -7,6 +7,7 @@ require "gem_config"
|
|
7
7
|
require "virtus"
|
8
8
|
require "api_client_base/version"
|
9
9
|
require "api_client_base/services/validate"
|
10
|
+
require "api_client_base/services/build_typhoeus_options"
|
10
11
|
require "api_client_base/base"
|
11
12
|
require "api_client_base/base/class_methods"
|
12
13
|
require "api_client_base/client"
|
@@ -29,29 +29,26 @@ module APIClientBase
|
|
29
29
|
lazy: true,
|
30
30
|
default: :default_api_client_base_path,
|
31
31
|
})
|
32
|
+
attribute :proxy, String
|
32
33
|
end
|
33
34
|
|
34
35
|
def call
|
35
36
|
before_call
|
37
|
+
run
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
36
41
|
|
42
|
+
def run
|
37
43
|
require "typhoeus"
|
38
44
|
if defined?(Typhoeus)
|
39
|
-
request = Typhoeus::Request.new(
|
40
|
-
uri,
|
41
|
-
method: action,
|
42
|
-
headers: headers,
|
43
|
-
body: body,
|
44
|
-
params: params,
|
45
|
-
)
|
46
|
-
|
45
|
+
request = Typhoeus::Request.new(uri, typhoeus_options)
|
47
46
|
request.run
|
48
47
|
else
|
49
|
-
fail "Either override #
|
48
|
+
fail "Either override #run or make sure Typhoeus is available for use."
|
50
49
|
end
|
51
50
|
end
|
52
51
|
|
53
|
-
private
|
54
|
-
|
55
52
|
def headers ; {} ; end
|
56
53
|
def body ; nil ; end
|
57
54
|
def params ; {} ; end
|
@@ -90,5 +87,15 @@ module APIClientBase
|
|
90
87
|
|
91
88
|
def before_call; end
|
92
89
|
|
90
|
+
def typhoeus_options
|
91
|
+
BuildTyphoeusOptions.(
|
92
|
+
method: action,
|
93
|
+
headers: headers,
|
94
|
+
body: body,
|
95
|
+
params: params,
|
96
|
+
proxy: proxy,
|
97
|
+
)
|
98
|
+
end
|
99
|
+
|
93
100
|
end
|
94
101
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module APIClientBase
|
2
|
+
class BuildTyphoeusOptions
|
3
|
+
|
4
|
+
def self.call(
|
5
|
+
method: nil,
|
6
|
+
headers: nil,
|
7
|
+
body: nil,
|
8
|
+
params: nil,
|
9
|
+
proxy: nil
|
10
|
+
)
|
11
|
+
opts = {
|
12
|
+
method: method,
|
13
|
+
headers: headers,
|
14
|
+
body: body,
|
15
|
+
params: params,
|
16
|
+
}
|
17
|
+
|
18
|
+
if proxy.present?
|
19
|
+
opts[:proxy] = proxy
|
20
|
+
end
|
21
|
+
|
22
|
+
opts
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: api_client_base
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ramon Tayag
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-04-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '1
|
61
|
+
version: '2.1'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '1
|
68
|
+
version: '2.1'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -140,16 +140,16 @@ dependencies:
|
|
140
140
|
name: dry-validation
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- - "
|
143
|
+
- - "<"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: '0'
|
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'
|
152
|
+
version: '1.0'
|
153
153
|
description: Abstractions to help author API wrappers in Ruby.
|
154
154
|
email:
|
155
155
|
- ramon.tayag@gmail.com
|
@@ -177,6 +177,7 @@ files:
|
|
177
177
|
- lib/api_client_base/client/class_methods.rb
|
178
178
|
- lib/api_client_base/request.rb
|
179
179
|
- lib/api_client_base/response.rb
|
180
|
+
- lib/api_client_base/services/build_typhoeus_options.rb
|
180
181
|
- lib/api_client_base/services/validate.rb
|
181
182
|
- lib/api_client_base/version.rb
|
182
183
|
homepage: https://github.com/imacchiato/api_client-ruby
|
@@ -199,8 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
199
200
|
- !ruby/object:Gem::Version
|
200
201
|
version: '0'
|
201
202
|
requirements: []
|
202
|
-
|
203
|
-
rubygems_version: 2.7.8
|
203
|
+
rubygems_version: 3.0.8
|
204
204
|
signing_key:
|
205
205
|
specification_version: 4
|
206
206
|
summary: Abstractions to help author API wrappers in Ruby.
|