rest-client-wrapper 3.0.1 → 3.2.1

Sign up to get free protection for your applications and to get access to all the features.
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: