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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: def40a893f9c570b65d5bee0bb033b6c20788a4efb4a88f6f0b9bc5c6c732bd1
4
- data.tar.gz: f4b4e68fb5aae3c0d5b8dcd2f8eb1feeb807f7c15753e2394c2bbfeae637e26d
3
+ metadata.gz: 672349eafd0d9487fd074d58761e4aa8de061bf370d165359d8a6378a0911af0
4
+ data.tar.gz: 7445c62040064f225ed52d81e0413e3f0cad2bde4843476a2ec486dbe5a92bb9
5
5
  SHA512:
6
- metadata.gz: 2d6a4ff99f8181e0b66df0097b179af79f45d655ee432946f1ecd6c4dd3722bedd7d9e741442246e4f14c86fbc74f792578585840f55d24f8c9ab89f897e1542
7
- data.tar.gz: 696d1b57674536173f903913745989bec8f520c83398d0f846e829f6589eeaaf008d8c5d0690072285c487ed6f718d80c94c16d9327ff36e44babc42e246181d
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: {}) # rubocop:disable Metrics/ParameterLists
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" unless payload.is_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 make_request(http_method:, uri:, payload: {}, query_params: {}, headers: {})
88
- parsed_uri = URI.parse(uri)
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
- uri = parsed_uri.absolute? ? parsed_uri.path : uri
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
- return format("#{ @host }#{ request.uri }", request.segment_params)
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)
@@ -18,6 +18,6 @@
18
18
 
19
19
  module RestClientWrapper
20
20
 
21
- VERSION = "3.0.1".freeze
21
+ VERSION = "3.2.1".freeze
22
22
 
23
23
  end
@@ -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.4.0"
33
+ s.required_ruby_version = ">= 2.6.0"
34
34
 
35
- s.add_runtime_dependency "json", "~> 1.8", ">= 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"
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"
@@ -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: :get, uri: @api_uri, segment_params: @param_hash, payload: @non_hash_value }) }.to raise_error(TypeError)
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.0.1
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: 2019-07-04 00:00:00.000000000 Z
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.4.0
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.4
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: