http-client-generator 0.2.4 → 0.3.0

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: dc140c4ff46aa9f676473ce9e79cd3391f52ba15fcc4e216c97ea60f19e87e16
4
- data.tar.gz: f954c42beb245f685b796837484adab448f8ae980715b5f3dfea8160c5815277
3
+ metadata.gz: 2b28a06585fb11bee1075d3de518dc3d548e24807d6dfc9397e698f3494877bc
4
+ data.tar.gz: 29aa9ea98c96074283c54257ef2679561cc53214229acd7e9b0c9b61d1106bdd
5
5
  SHA512:
6
- metadata.gz: d10565515b1a5123c7bf00a69322ff439a8a9091c916f41a8b1b2033912573130bffb9b6ff6485e1bfdc89a1c5f4b679a8da0583382a40c119fd5a205949802a
7
- data.tar.gz: 816a1e79aa512d1772efd88c43a86167bf282c4be3c9e45b12ad507a5374aa9bc51bc2be7c6783ce1f6ce90b931cf9376ab8d7396ee37a621a1402fb21be9f52
6
+ metadata.gz: eaa03af44abe202bc6509492d39013ea3b96eb0e930814655245abc3cd256cbc3e2a9cc972d4dbb31aec238364c95e80d2946249f9b99cdadb3c7f65f74509c5
7
+ data.tar.gz: aa991edd7d68aa635b964cc8307b21729b24c22cca1d253ea89e8ea0358360729959c0303d8eddaeb0040426a3ddfa14958b9379db3d7f57bd1a3d15c5f2b160
@@ -2,13 +2,15 @@
2
2
 
3
3
  module HttpClientGenerator
4
4
  module KeyTransformer # :nodoc:
5
+ class CollisionError < StandardError; end
6
+
5
7
  module_function
6
8
 
7
9
  def deep_transform_keys(value, &block)
8
10
  case value
9
11
  when Hash
10
12
  value.each_with_object({}) do |(key, hash_value), transformed|
11
- transformed[yield(key)] = deep_transform_keys(hash_value, &block)
13
+ assign_key(transformed, yield(key), deep_transform_keys(hash_value, &block))
12
14
  end
13
15
  when Array
14
16
  value.map { |item| deep_transform_keys(item, &block) }
@@ -16,5 +18,11 @@ module HttpClientGenerator
16
18
  value
17
19
  end
18
20
  end
21
+
22
+ def assign_key(hash, key, value)
23
+ raise CollisionError, "Key collision: multiple keys map to #{key.inspect}" if hash.key?(key) && hash[key] != value
24
+
25
+ hash[key] = value
26
+ end
19
27
  end
20
28
  end
@@ -16,6 +16,8 @@ module HttpClientGenerator
16
16
  req.body = body
17
17
 
18
18
  req
19
+ rescue KeyTransformer::CollisionError => e
20
+ req.raise_message(e.message)
19
21
  end
20
22
  end
21
23
  end
@@ -12,6 +12,8 @@ module HttpClientGenerator
12
12
  KeyTransformer.deep_transform_keys(req.response_body) { |key| Inflector.underscore(key).to_sym }
13
13
 
14
14
  req
15
+ rescue KeyTransformer::CollisionError => e
16
+ req.raise_message(e.message)
15
17
  end
16
18
  end
17
19
  end
@@ -15,7 +15,7 @@ module HttpClientGenerator
15
15
 
16
16
  return req unless @schema_helper.respond_to?(schema_name)
17
17
 
18
- req.response_body =
18
+ req.body =
19
19
  @schema_helper
20
20
  .public_send(schema_name, req.body)
21
21
  .value_or do |e|
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module HttpClientGenerator
4
- VERSION = '0.2.4'
4
+ VERSION = '0.3.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: http-client-generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Egorov