nice_http 1.9.3 → 1.9.5

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: 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: