Class: DryOpenApi::Components

Inherits:
Object
  • Object
show all
Extended by:
Dry::Initializer
Includes:
EquatableAsContent
Defined in:
lib/dry_open_api/components.rb

Overview

Class Method Summary collapse

Instance Method Summary collapse

Methods included from EquatableAsContent

#==

Class Method Details

.load(hash) ⇒ Object

rubocop:disable Metrics/PerceivedComplexity



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/dry_open_api/components.rb', line 35

def self.load(hash)
  return unless hash

  new(
    schemas: hash['schemas']&.map { |k, v| [k, Reference.load(v) || Schema.load(v)] }&.to_h,
    responses: hash['responses']&.map { |k, v| [k, Reference.load(v) || Response.load(v)] }&.to_h,
    parameters: hash['parameters']&.map { |k, v| [k, Reference.load(v) || Parameter.load(v)] }&.to_h,
    examples: hash['examples']&.map { |k, v| [k, Reference.load(v) || Example.load(v)] }&.to_h,
    request_bodies: hash['requestBodies']&.map { |k, v| [k, Reference.load(v) || RequestBody.load(v)] }&.to_h,
    headers: hash['headers']&.map { |k, v| [k, Reference.load(v) || Header.load(v)] }&.to_h,
    security_schemes: hash['securitySchemes']&.map { |k, v|
                                                     [k, Reference.load(v) || SecuritySchema.load(v)]
                                                   }&.to_h,
    links: hash['links']&.map { |k, v| [k, Reference.load(v) || Link.load(v)] }&.to_h,
    callbacks: hash['callbacks']&.map { |k, v| [k, Reference.load(v) || Callback.load(v)] }&.to_h
  )
end

Instance Method Details

#serializable_hashObject

rubocop:disable Metrics/MethodLength



20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/dry_open_api/components.rb', line 20

def serializable_hash
  {
    'schemas' => schemas&.map { |k, v| [k.to_s, v.serializable_hash] }&.to_h,
    'responses' => responses&.map { |k, v| [k.to_s, v.serializable_hash] }&.to_h,
    'parameters' => parameters&.map { |k, v| [k.to_s, v.serializable_hash] }&.to_h,
    'examples' => examples&.map { |k, v| [k.to_s, v.serializable_hash] }&.to_h,
    'requestBodies' => request_bodies&.map { |k, v| [k.to_s, v.serializable_hash] }&.to_h,
    'headers' => headers&.map { |k, v| [k.to_s, v.serializable_hash] }&.to_h,
    'securitySchemes' => security_schemes&.map { |k, v| [k.to_s, v.serializable_hash] }&.to_h,
    'links' => links&.map { |k, v| [k.to_s, v.serializable_hash] }&.to_h,
    'callbacks' => callbacks&.map { |k, v| [k.to_s, v.serializable_hash] }&.to_h
  }.compact
end