rest-client-wrapper 3.0.1 → 3.2.1
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/lib/rest_client_wrapper/paginators/echo.rb +2 -2
- data/lib/rest_client_wrapper/paginators/echo_paginator.rb +3 -3
- data/lib/rest_client_wrapper/paginators/header_link.rb +2 -2
- data/lib/rest_client_wrapper/paginators/header_link_paginator.rb +2 -2
- data/lib/rest_client_wrapper/request.rb +3 -3
- data/lib/rest_client_wrapper/rest_client.rb +13 -10
- data/lib/rest_client_wrapper/version.rb +1 -1
- data/rest-client-wrapper.gemspec +5 -5
- data/spec/request_spec.rb +1 -1
- metadata +13 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 672349eafd0d9487fd074d58761e4aa8de061bf370d165359d8a6378a0911af0
|
4
|
+
data.tar.gz: 7445c62040064f225ed52d81e0413e3f0cad2bde4843476a2ec486dbe5a92bb9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40477e74390f5cbc3f2fda466baf98cdaed8ce462508c1a40e881f190fba85449ef5dd1fc8c378bf2ab99a3dcefda97ea1bf19f2a94a78bb7206137aa1d3ff38
|
7
|
+
data.tar.gz: 9015cd901cfaa23fccd76f1f7b39223ed28f1c9a0111b10c080192a32cd0a0f2385c4f798b4a174966d991b2461fb0296a7ea673e1a2563b4067de463eb33b01
|
@@ -36,13 +36,13 @@ module RestClientWrapper
|
|
36
36
|
@config = { limit: limit }
|
37
37
|
end
|
38
38
|
|
39
|
-
def paginate(http_method:, uri:, query_params: {}, headers: {}, data: false)
|
39
|
+
def paginate(http_method:, uri:, segment_params: {}, query_params: {}, headers: {}, data: false)
|
40
40
|
raise RestClientError.new("Client not set, unable to make API call", nil, nil) unless @rest_client
|
41
41
|
|
42
42
|
query_params.reverse_merge!(@config)
|
43
43
|
responses = []
|
44
44
|
loop do
|
45
|
-
response = @rest_client.make_request({ http_method: http_method, uri: uri, query_params: query_params, headers: headers })
|
45
|
+
response = @rest_client.make_request({ http_method: http_method, uri: uri, segment_params: segment_params, query_params: query_params, headers: headers })
|
46
46
|
block_given? ? yield(response) : (responses << response)
|
47
47
|
links = _pagination_links(response)
|
48
48
|
break unless links.key?(:offset)
|
@@ -36,13 +36,13 @@ module RestClientWrapper
|
|
36
36
|
@config = { limit: limit }
|
37
37
|
end
|
38
38
|
|
39
|
-
def paginate(http_method:, uri:, query_params: {}, headers: {}, data: false)
|
39
|
+
def paginate(http_method:, uri:, segment_params: {}, query_params: {}, headers: {}, data: false)
|
40
40
|
raise RestClientError.new("Client not set, unable to make API call", nil, nil) unless @rest_client
|
41
41
|
|
42
42
|
query_params.reverse_merge!(@config)
|
43
43
|
responses = []
|
44
44
|
loop do
|
45
|
-
response = @rest_client.make_request({ http_method: http_method, uri: uri, query_params: query_params, headers: headers })
|
45
|
+
response = @rest_client.make_request({ http_method: http_method, uri: uri, segment_params: segment_params, query_params: query_params, headers: headers })
|
46
46
|
block_given? ? yield(response) : (responses << response)
|
47
47
|
links = _pagination_links(response)
|
48
48
|
break unless links.key?(:offset)
|
@@ -55,7 +55,7 @@ module RestClientWrapper
|
|
55
55
|
private
|
56
56
|
|
57
57
|
def _pagination_links(response)
|
58
|
-
next_l = response&.body&.[](:next) || ""
|
58
|
+
next_l = response&.body.class == Hash ? response&.body&.[](:next) || "" : ""
|
59
59
|
next_h = Rack::Utils.parse_query(URI.parse(next_l)&.query)
|
60
60
|
return next_h.symbolize_keys!
|
61
61
|
end
|
@@ -36,14 +36,14 @@ module RestClientWrapper
|
|
36
36
|
@config = { page: nil, per_page: per_page }
|
37
37
|
end
|
38
38
|
|
39
|
-
def paginate(http_method:, uri:, query_params: {}, headers: {}, data: false)
|
39
|
+
def paginate(http_method:, uri:, segment_params: {}, query_params: {}, headers: {}, data: false)
|
40
40
|
raise RestClientError.new("Client not set, unable to make API call", nil, nil) unless @rest_client
|
41
41
|
|
42
42
|
query_params.reverse_merge!(@config)
|
43
43
|
responses = []
|
44
44
|
loop.with_index(1) do |_, page|
|
45
45
|
query_params[:page] = page
|
46
|
-
response = @rest_client.make_request({ http_method: http_method, uri: uri, query_params: query_params, headers: headers })
|
46
|
+
response = @rest_client.make_request({ http_method: http_method, uri: uri, segment_params: segment_params, query_params: query_params, headers: headers })
|
47
47
|
block_given? ? yield(response) : (responses << response)
|
48
48
|
links = _pagination_links(response)
|
49
49
|
break unless links.key?(:next)
|
@@ -36,14 +36,14 @@ module RestClientWrapper
|
|
36
36
|
@config = { page: nil, per_page: per_page }
|
37
37
|
end
|
38
38
|
|
39
|
-
def paginate(http_method:, uri:, query_params: {}, headers: {}, data: false)
|
39
|
+
def paginate(http_method:, uri:, segment_params: {}, query_params: {}, headers: {}, data: false)
|
40
40
|
raise RestClientError.new("Client not set, unable to make API call", nil, nil) unless @rest_client
|
41
41
|
|
42
42
|
query_params.reverse_merge!(@config)
|
43
43
|
responses = []
|
44
44
|
loop.with_index(1) do |_, page|
|
45
45
|
query_params[:page] = page
|
46
|
-
response = @rest_client.make_request({ http_method: http_method, uri: uri, query_params: query_params, headers: headers })
|
46
|
+
response = @rest_client.make_request({ http_method: http_method, uri: uri, segment_params: segment_params, query_params: query_params, headers: headers })
|
47
47
|
block_given? ? yield(response) : (responses << response)
|
48
48
|
links = _pagination_links(response)
|
49
49
|
break unless links.key?(:next)
|
@@ -28,13 +28,13 @@ module RestClientWrapper
|
|
28
28
|
VALID_HTTP_METHODS = %i[get post put patch delete connect options trace].freeze
|
29
29
|
HTTP_METHOD_FOR_JSON = %i[post put patch].freeze
|
30
30
|
|
31
|
-
def initialize(http_method:, uri:, segment_params: {}, payload: {}, query_params: {}, headers: {})
|
31
|
+
def initialize(http_method:, uri:, segment_params: {}, payload: {}, query_params: {}, headers: {})
|
32
32
|
@uri = uri
|
33
33
|
self.headers = headers
|
34
|
+
self.http_method = http_method
|
34
35
|
self.segment_params = segment_params
|
35
36
|
self.payload = payload
|
36
37
|
self.query_params = query_params
|
37
|
-
self.http_method = http_method
|
38
38
|
end
|
39
39
|
|
40
40
|
def http_method=(http_method)
|
@@ -47,7 +47,7 @@ module RestClientWrapper
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def payload=(payload)
|
50
|
-
raise TypeError, "Request payload parameters is not a hash"
|
50
|
+
raise TypeError, "Request payload parameters is not a hash" if !payload.is_a?(Hash) && self.headers[:content_type] == :json
|
51
51
|
|
52
52
|
@payload = payload
|
53
53
|
end
|
@@ -66,7 +66,7 @@ module RestClientWrapper
|
|
66
66
|
response_code = nil
|
67
67
|
|
68
68
|
begin
|
69
|
-
payload = Request::HTTP_METHOD_FOR_JSON.include?(request.http_method) ? request.payload.to_json : request.payload
|
69
|
+
payload = Request::HTTP_METHOD_FOR_JSON.include?(request.http_method) && request.headers[:content_type] == :json ? request.payload.to_json : request.payload
|
70
70
|
request.headers[:params] = request.query_params
|
71
71
|
response = ::RestClient::Request.execute({ method: request.http_method, url: url, payload: payload, headers: request.headers })
|
72
72
|
response_code = response&.code
|
@@ -84,22 +84,21 @@ module RestClientWrapper
|
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
87
|
-
def
|
88
|
-
|
89
|
-
|
90
|
-
raise ArgumentError, "URL host does not match config host of instance, unable to make API call" if parsed_uri.absolute? && @host.casecmp("#{ parsed_uri.scheme }://#{ parsed_uri.host }").nonzero?
|
87
|
+
def execute_paginated_request(request:, data: true)
|
88
|
+
return self.make_request_for_pages({ http_method: request.http_method, uri: request.uri, segment_params: request.segment_params, query_params: request.query_params, headers: request.headers, data: data }) # rubocop:disable Metrics/LineLength
|
89
|
+
end
|
91
90
|
|
92
|
-
|
93
|
-
request = Request.new({ http_method: http_method, uri: uri, payload: payload, query_params: query_params })
|
91
|
+
def make_request(http_method:, uri:, payload: {}, segment_params: {}, query_params: {}, headers: {})
|
92
|
+
request = Request.new({ http_method: http_method, uri: uri, payload: payload, segment_params: segment_params, query_params: query_params })
|
94
93
|
request.headers = headers
|
95
94
|
return self.execute({ request: request })
|
96
95
|
end
|
97
96
|
|
98
|
-
def make_request_for_pages(http_method:, uri:, query_params: {}, headers: {}, data: false)
|
97
|
+
def make_request_for_pages(http_method:, uri:, segment_params: {}, query_params: {}, headers: {}, data: false)
|
99
98
|
raise RestClientError.new("Paginator not set, unable to make API call", nil, nil) unless @paginator
|
100
99
|
|
101
100
|
@paginator.rest_client ||= self
|
102
|
-
return @paginator.paginate({ http_method: http_method, uri: uri, query_params: query_params, headers: headers, data: data })
|
101
|
+
return @paginator.paginate({ http_method: http_method, uri: uri, segment_params: segment_params, query_params: query_params, headers: headers, data: data })
|
103
102
|
end
|
104
103
|
|
105
104
|
private
|
@@ -121,7 +120,11 @@ module RestClientWrapper
|
|
121
120
|
end
|
122
121
|
|
123
122
|
def _build_uri(request)
|
124
|
-
|
123
|
+
uri = format(request.uri, request.segment_params)
|
124
|
+
parsed_uri = URI.parse(uri)
|
125
|
+
raise ArgumentError, "URL host does not match config host of instance, unable to make API call" if parsed_uri.absolute? && @host.casecmp("#{ parsed_uri.scheme }://#{ parsed_uri.host }").nonzero?
|
126
|
+
|
127
|
+
return parsed_uri.absolute? ? uri : "#{ @host }#{ uri }"
|
125
128
|
end
|
126
129
|
|
127
130
|
def _validate_request(request)
|
data/rest-client-wrapper.gemspec
CHANGED
@@ -30,12 +30,12 @@ Gem::Specification.new do |s|
|
|
30
30
|
s.summary = "Rest client wrapper"
|
31
31
|
s.description = "Generic REST client wrapper"
|
32
32
|
s.license = "GPL 3.0"
|
33
|
-
s.required_ruby_version = ">= 2.
|
33
|
+
s.required_ruby_version = ">= 2.6.0"
|
34
34
|
|
35
|
-
s.add_runtime_dependency "json", "
|
36
|
-
s.add_runtime_dependency "oauth2", "
|
37
|
-
s.add_runtime_dependency "rack", "
|
38
|
-
s.add_runtime_dependency "rest-client", "
|
35
|
+
s.add_runtime_dependency "json", ">= 1.8.3"
|
36
|
+
s.add_runtime_dependency "oauth2", ">= 1.2"
|
37
|
+
s.add_runtime_dependency "rack", ">= 2.0.5"
|
38
|
+
s.add_runtime_dependency "rest-client", ">= 2.0.2"
|
39
39
|
s.add_runtime_dependency "typhoeus", "~> 1.0", ">= 1.0.1"
|
40
40
|
|
41
41
|
s.add_development_dependency "colorize", "~> 0.7", ">= 0.7.0"
|
data/spec/request_spec.rb
CHANGED
@@ -142,7 +142,7 @@ module RestClientWrapper # rubocop:disable Metrics/ModuleLength
|
|
142
142
|
context "when payload is not a hash" do
|
143
143
|
|
144
144
|
it "will raise TypeError" do
|
145
|
-
expect { Request.new({ http_method: :
|
145
|
+
expect { Request.new({ http_method: :put, uri: @api_uri, segment_params: @param_hash, payload: @non_hash_value }) }.to raise_error(TypeError)
|
146
146
|
end
|
147
147
|
|
148
148
|
end
|
metadata
CHANGED
@@ -1,22 +1,19 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rest-client-wrapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- University of Adelaide
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-11-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.8'
|
20
17
|
- - ">="
|
21
18
|
- !ruby/object:Gem::Version
|
22
19
|
version: 1.8.3
|
@@ -24,9 +21,6 @@ dependencies:
|
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
|
-
- - "~>"
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '1.8'
|
30
24
|
- - ">="
|
31
25
|
- !ruby/object:Gem::Version
|
32
26
|
version: 1.8.3
|
@@ -34,42 +28,42 @@ dependencies:
|
|
34
28
|
name: oauth2
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
36
30
|
requirements:
|
37
|
-
- - "
|
31
|
+
- - ">="
|
38
32
|
- !ruby/object:Gem::Version
|
39
33
|
version: '1.2'
|
40
34
|
type: :runtime
|
41
35
|
prerelease: false
|
42
36
|
version_requirements: !ruby/object:Gem::Requirement
|
43
37
|
requirements:
|
44
|
-
- - "
|
38
|
+
- - ">="
|
45
39
|
- !ruby/object:Gem::Version
|
46
40
|
version: '1.2'
|
47
41
|
- !ruby/object:Gem::Dependency
|
48
42
|
name: rack
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
50
44
|
requirements:
|
51
|
-
- - "
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: 2.0.5
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
51
|
requirements:
|
58
|
-
- - "
|
52
|
+
- - ">="
|
59
53
|
- !ruby/object:Gem::Version
|
60
54
|
version: 2.0.5
|
61
55
|
- !ruby/object:Gem::Dependency
|
62
56
|
name: rest-client
|
63
57
|
requirement: !ruby/object:Gem::Requirement
|
64
58
|
requirements:
|
65
|
-
- - "
|
59
|
+
- - ">="
|
66
60
|
- !ruby/object:Gem::Version
|
67
61
|
version: 2.0.2
|
68
62
|
type: :runtime
|
69
63
|
prerelease: false
|
70
64
|
version_requirements: !ruby/object:Gem::Requirement
|
71
65
|
requirements:
|
72
|
-
- - "
|
66
|
+
- - ">="
|
73
67
|
- !ruby/object:Gem::Version
|
74
68
|
version: 2.0.2
|
75
69
|
- !ruby/object:Gem::Dependency
|
@@ -186,7 +180,7 @@ licenses:
|
|
186
180
|
- GPL 3.0
|
187
181
|
metadata:
|
188
182
|
allowed_push_host: https://rubygems.org
|
189
|
-
post_install_message:
|
183
|
+
post_install_message:
|
190
184
|
rdoc_options: []
|
191
185
|
require_paths:
|
192
186
|
- lib
|
@@ -194,15 +188,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
194
188
|
requirements:
|
195
189
|
- - ">="
|
196
190
|
- !ruby/object:Gem::Version
|
197
|
-
version: 2.
|
191
|
+
version: 2.6.0
|
198
192
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
199
193
|
requirements:
|
200
194
|
- - ">="
|
201
195
|
- !ruby/object:Gem::Version
|
202
196
|
version: '0'
|
203
197
|
requirements: []
|
204
|
-
rubygems_version: 3.0.
|
205
|
-
signing_key:
|
198
|
+
rubygems_version: 3.0.3
|
199
|
+
signing_key:
|
206
200
|
specification_version: 4
|
207
201
|
summary: Rest client wrapper
|
208
202
|
test_files:
|