http-client-generator 0.1.25 → 0.1.27

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: 0e631d6496a32223a78647bd0e8e20351460609198fcb39120cbc6ee8dcb5e89
4
- data.tar.gz: 8eceda8b7ce7eb04814e7646bcec2c2aba7e156688e585d228ba075da87b8105
3
+ metadata.gz: ae73c35b127935b814ee29b6f5fcb55f8afda0b1af73c9b005c545f924fb0b60
4
+ data.tar.gz: 6564a377fbe9b4ac20b8477ef81ca0dccaa784c91ec5a13f8d98fb74d12323f3
5
5
  SHA512:
6
- metadata.gz: 525fd231428f4978cf354812a02101a43b006e29b40e0b00c66ea0d4f529a684dda5ea7ee91ddc2f10ef06b20426e725d4f01ad366c51cf4f7fa4c0f629a0f18
7
- data.tar.gz: b6da1d6c14f39bfbcfb402fd741e693315765c75791570efdd27e290cee0feda98c323abaad0fa43dd68ec3a135ff1c36f08f549225198dd636d12d271cd1652
6
+ metadata.gz: 387710c3410320184a5338d03cb28c7051576996fc168cd3f9c5d2b7fdc2cbe4987bac57688a2196517dd75d1c6c2f0ed5fe701402be9f63758aac22f61f4609
7
+ data.tar.gz: e97d773976c7ba0f5b9600e550d04b6adf477f2c77a8627e9c96c963cc653f73617309a30a298f93317d407d295681d0a9ce6f7d4187d1ca88fa1386ad3a3d69
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module HttpClientGenerator
4
+ class Plugs
5
+ class ValidateRequest
6
+ Plugs.register :validate_request, self
7
+
8
+ def initialize(schema_helper:)
9
+ @schema_helper = schema_helper
10
+ end
11
+
12
+ def call(req)
13
+ schema_name = :"#{req.name}_#{req.verb}"
14
+
15
+ return req unless @schema_helper.respond_to?(schema_name)
16
+
17
+ req.response_body = @schema_helper.public_send(schema_name, req.body)
18
+ .value_or { |e| req.raise_message("Unexpected #{e.inspect} in #{req.body}") }
19
+
20
+ req
21
+ end
22
+ end
23
+ end
24
+ end
25
+
@@ -5,31 +5,8 @@ module HttpClientGenerator
5
5
  class ValidateResponse
6
6
  Plugs.register :validate_response, self
7
7
 
8
- module SchemaBuilder
9
- def self.included(base)
10
- super
11
-
12
- require 'datacaster'
13
- base.extend(self)
14
- end
15
-
16
- def schema_for(name, &block)
17
- @schemas ||= {}
18
- @schemas[name] = Datacaster.choosy_schema(&block)
19
-
20
- define_singleton_method(name) do |params|
21
- @schemas[name].(params)
22
- end
23
-
24
- define_method(name) do |params|
25
- @schemas[name].(params)
26
- end
27
- end
28
- end
29
-
30
- def initialize(schema_helper:, strict: false)
8
+ def initialize(schema_helper:)
31
9
  @schema_helper = schema_helper
32
- @strict = strict
33
10
  end
34
11
 
35
12
  def call(req)
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module HttpClientGenerator
4
+ module SchemaBuilder
5
+ def self.included(base)
6
+ super
7
+
8
+ require 'datacaster'
9
+ base.extend(self)
10
+ end
11
+
12
+ def schema_for(name, kind: :choosy, &block)
13
+ @schemas ||= {}
14
+ @schemas[name] =
15
+ case kind
16
+ in :choosy
17
+ Datacaster.choosy_schema(&block)
18
+ in :partial
19
+ Datacaster.partial_schema(&block)
20
+ in :strict
21
+ Datacaster.schema(&block)
22
+ end
23
+
24
+ define_singleton_method(name) do |params|
25
+ @schemas[name].(params)
26
+ end
27
+
28
+ define_method(name) do |params|
29
+ @schemas[name].(params)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module HttpClientGenerator
4
- VERSION = '0.1.25'
4
+ VERSION = '0.1.27'
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.1.25
4
+ version: 0.1.27
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Egorov
@@ -55,10 +55,12 @@ files:
55
55
  - lib/http_client_generator/plugs/set_header.rb
56
56
  - lib/http_client_generator/plugs/set_request_id.rb
57
57
  - lib/http_client_generator/plugs/underscore_response.rb
58
+ - lib/http_client_generator/plugs/validate_request.rb
58
59
  - lib/http_client_generator/plugs/validate_response.rb
59
60
  - lib/http_client_generator/request.rb
60
61
  - lib/http_client_generator/resource.rb
61
62
  - lib/http_client_generator/resources_definition.rb
63
+ - lib/http_client_generator/schema_builder.rb
62
64
  - lib/http_client_generator/version.rb
63
65
  homepage:
64
66
  licenses: []