Module: HttpClientGenerator::SchemaBuilder

Defined in:
lib/http_client_generator/schema_builder.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



5
6
7
8
9
10
# File 'lib/http_client_generator/schema_builder.rb', line 5

def self.included(base)
  super

  require 'datacaster'
  base.extend(self)
end

Instance Method Details

#schema_for(name, kind: :choosy, &block) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/http_client_generator/schema_builder.rb', line 12

def schema_for(name, kind: :choosy, &block)
  @schemas ||= {}
  @schemas[name] =
    case kind
    in :choosy
      Datacaster.choosy_schema(&block)
    in :partial
      Datacaster.partial_schema(&block)
    in :strict
      Datacaster.schema(&block)
    end

  define_singleton_method(name) do |params|
    @schemas[name].(params)
  end

  define_method(name) do |params|
    @schemas[name].(params)
  end
end