nice_http 1.9.3 → 1.9.5

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: 66d16e3ecb846d6a31ac8db489128b32784848734a2660a07f9c04ed00e2cf76
4
- data.tar.gz: 87d110c318ed6db81c7cacb6ea560368b180a870a8bf1be2f32f56397ee95215
3
+ metadata.gz: 806526768550e3cbc865065969da4a64f743440fdc049ec0a57ff9030e5cff6f
4
+ data.tar.gz: 46f3bea1706bf4329c918e309f3e2d0ac806841c4fa84e8b151eebdbcff1306b
5
5
  SHA512:
6
- metadata.gz: dbeeda7985069f1affc5780570ec81650149c8f47e01db706baf35b02ff998f56e7e420a7fb418bfcb868109f75658d40f933f6e60f963140fff422f8f651ef9
7
- data.tar.gz: 33d9b360f95f055e6e951cc83e525f9152874bc6f1140c5f6a0091bc1e4a9433e865d236e83737f75eb155fe5e5f50dc74c81b56d2c0e874f0c39d92ea1985ee
6
+ metadata.gz: 05fcd7af53f95a9285e7c9a8928e1d2e2ec568a6299209cfa7f34a9a864da01fa221427a9ac8fb89be7a250e0c95842ca3f343485029dc4974164fb034f819f5
7
+ data.tar.gz: 5910f5b98a6fc60c2ff43f8e74d466375f41b7c44c116e4285da19bbe354f1fe5aed4ec7e314ffce6465bf2f12ffc5988f539d22c2ff2db6d101e43d3dd42b28
data/README.md CHANGED
@@ -260,7 +260,7 @@ NiceHttp.requests = {
260
260
  }
261
261
  ```
262
262
 
263
- You can use `NiceHttp.requests` to specify certain `headers`, `path` parameters or `data` that will apply on all requests sent.
263
+ You can use `NiceHttp.requests` to specify certain `headers`, `path` parameters or `data` or `values_for` that will apply on all requests sent.
264
264
  ```ruby
265
265
  NiceHttp.requests = {
266
266
  path: 'api-version=2022-12-09&testing=true',
@@ -272,11 +272,14 @@ NiceHttp.requests = {
272
272
  }
273
273
  ```
274
274
 
275
- Lambdas can be used also on data to change the payloads in real-time. It is only available on root of the data hash. In case the lambda returns 'nil' the key won't be added to the request.
275
+ Lambdas can be used also on data and values_for to change the payloads in real-time. In case the lambda returns 'nil' the key won't be added to the request.
276
276
  ```ruby
277
277
  NiceHttp.requests = {
278
278
  data: {
279
279
  zones: lambda { ENV['ZONES'] if NiceHttp.request[:method] == 'PUT' and NiceHttp.request[:path].match?(/^\/api\/users\/\d+/)}
280
+ },
281
+ values_for: {
282
+ region: lambda { 'Europe' if NiceHttp.request[:name] == 'Users.add' }
280
283
  }
281
284
  }
282
285
  ```
@@ -9,14 +9,20 @@ module NiceHttpManageRequest
9
9
  # output:
10
10
  # path, data, headers
11
11
  ######################################################
12
- def manage_request(*arguments)
12
+ def manage_request(*arguments_param)
13
+ if arguments_param.size == 1 and arguments_param[0].kind_of?(Hash)
14
+ arguments = [arguments_param[0].deep_copy()]
15
+ else
16
+ arguments = arguments_param
17
+ end
18
+
13
19
  require "json"
14
20
  require 'cgi'
15
21
  require 'uri'
16
22
 
17
23
  @prev_request = Hash.new() if @prev_request.nil?
18
24
  @defaults_request = self.class.requests if @defaults_request.nil? and self.class.requests.is_a?(Hash)
19
- @request = Hash.new() if @request.nil?
25
+ @request = Hash.new()
20
26
  @defaults_request = Hash.new() unless @defaults_request.is_a?(Hash)
21
27
  self.class.request = @request
22
28
 
@@ -128,15 +134,26 @@ module NiceHttpManageRequest
128
134
  if arguments[0].include?(:values) and !arguments[0].include?(:values_for)
129
135
  arguments[0][:values_for] = arguments[0][:values]
130
136
  end
131
-
137
+ values_for_orig = {}
138
+ if @defaults_request.key?(:values_for) and @defaults_request.is_a?(Hash) and @defaults_request[:values_for].size > 0
139
+ if arguments[0].include?(:values_for)
140
+ values_for_orig = arguments[0][:values_for].deep_copy
141
+ arguments[0][:values_for] = @defaults_request[:values_for].nice_merge(arguments[0][:values_for])
142
+ else
143
+ arguments[0][:values_for] = @defaults_request[:values_for].deep_copy
144
+ end
145
+ end
146
+
132
147
  if @values_for.size > 0
133
148
  if arguments[0][:values_for].nil?
134
- arguments[0][:values_for] = @values_for.dup
149
+ arguments[0][:values_for] = @values_for.deep_copy
135
150
  else
136
- arguments[0][:values_for] = @values_for.merge(arguments[0][:values_for])
151
+ arguments[0][:values_for] = @values_for.nice_merge(arguments[0][:values_for])
137
152
  end
138
153
  end
139
-
154
+ if arguments[0].include?(:values_for) and arguments[0][:values_for].size > 0 and arguments[0][:values_for].is_a?(Hash)
155
+ arguments[0][:values_for] = NiceHttpUtils.set_lambdas(arguments[0][:values_for], values_for_orig)
156
+ end
140
157
  if content_type_included and (!headers_t["Content-Type"][/text\/xml/].nil? or
141
158
  !headers_t["Content-Type"]["application/soap+xml"].nil? or
142
159
  !headers_t["Content-Type"][/application\/jxml/].nil?)
@@ -160,22 +177,15 @@ module NiceHttpManageRequest
160
177
  }
161
178
  end
162
179
  elsif data.kind_of?(Hash)
163
- data.merge!(@defaults_request[:data]) if @defaults_request.key?(:data)
164
- #lambdas on data only supports on root of the hash
165
- data.each do |k, v|
166
- if v.is_a?(Proc)
167
- data_kv = v.call
168
- if data_kv.nil?
169
- data.delete(k)
170
- else
171
- data[k] = data_kv
172
- end
173
- end
174
- end
180
+ data_orig = data.deep_copy
181
+ data.nice_merge!(@defaults_request[:data]) if @defaults_request.key?(:data)
182
+ data = NiceHttpUtils.set_lambdas(data, data_orig)
183
+
175
184
  if arguments[0].include?(:values_for)
176
185
  data = data.set_values(arguments[0][:values_for])
177
186
  end
178
187
  data = data.to_json()
188
+
179
189
  elsif data.kind_of?(Array)
180
190
  #todo: implement set_nested
181
191
  data_arr = Array.new()
@@ -309,7 +319,6 @@ module NiceHttpManageRequest
309
319
  self.class.last_request = message
310
320
  @logger.info(message)
311
321
  end
312
-
313
322
  return path, data, headers_t
314
323
  rescue Exception => stack
315
324
  @logger.fatal(stack)
@@ -0,0 +1,40 @@
1
+ module NiceHttpUtils
2
+ ##################################################
3
+ # It will set all lambdas in data hash
4
+ # @param data [Hash]
5
+ # @param data_orig [Hash]
6
+ # @return [Hash] the data hash with all lambdas set
7
+ ####################################################
8
+ def self.set_lambdas(data, data_orig)
9
+ data = data.dup
10
+ data_orig = data_orig.dup unless data_orig.nil?
11
+ if data.is_a?(Hash)
12
+ data.each do |k, v|
13
+ if v.is_a?(Proc)
14
+ data_kv = v.call
15
+ if data_kv.nil?
16
+ data.delete(k) unless data_orig.is_a?(Hash) and data_orig.key?(k)
17
+ else
18
+ data[k] = data_kv
19
+ end
20
+ elsif v.is_a?(Hash)
21
+ data[k] = set_lambdas(v, data_orig[k])
22
+ elsif v.is_a?(Array)
23
+ v.each.with_index do |v2, i|
24
+ if data_orig.key?(k) and data_orig[k].is_a?(Array) and data_orig[k].size > i
25
+ data[k][i] = set_lambdas(v2, data_orig[k][i])
26
+ else
27
+ data[k][i] = set_lambdas(v2, nil)
28
+ end
29
+ end
30
+ else
31
+ data[k] = v
32
+ end
33
+ end
34
+ data = data_orig.nice_merge(data) unless data_orig.nil?
35
+ elsif data.is_a?(Proc)
36
+ data = data.call
37
+ end
38
+ return data
39
+ end
40
+ end
data/lib/nice_http.rb CHANGED
@@ -15,6 +15,7 @@ require_relative "nice_http/manage/wait_async_operation"
15
15
  require_relative "nice_http/utils/basic_authentication"
16
16
  require_relative "nice_http/utils/get_value_xml_tag"
17
17
  require_relative "nice_http/utils/set_value_xml_tag"
18
+ require_relative "nice_http/utils/set_lambdas"
18
19
  require_relative "nice_http/reset"
19
20
  require_relative "nice_http/add_stats"
20
21
  require_relative "nice_http/defaults"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nice_http
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.3
4
+ version: 1.9.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mario Ruiz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-24 00:00:00.000000000 Z
11
+ date: 2023-01-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nice_hash
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.17'
19
+ version: '1.18'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 1.17.3
22
+ version: 1.18.2
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: '1.17'
29
+ version: '1.18'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 1.17.3
32
+ version: 1.18.2
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rspec
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -85,6 +85,7 @@ files:
85
85
  - lib/nice_http/save_stats.rb
86
86
  - lib/nice_http/utils/basic_authentication.rb
87
87
  - lib/nice_http/utils/get_value_xml_tag.rb
88
+ - lib/nice_http/utils/set_lambdas.rb
88
89
  - lib/nice_http/utils/set_value_xml_tag.rb
89
90
  homepage: https://github.com/MarioRuiz/nice_http
90
91
  licenses: