Class: DryOpenApi::Operation

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

Overview

no corresponding thing in the spec

Class Method Summary collapse

Instance Method Summary collapse

Methods included from EquatableAsContent

#==

Class Method Details

.load(hash) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/dry_open_api/operation.rb', line 40

def self.load(hash)
  return unless hash

  new(
    responses: Responses.load(hash['responses']),
    tags: hash['tags'],
    summary: hash['summary'],
    description: hash['description'],
    external_docs: ExternalDocumentation.load(hash['externalDocs']),
    operation_id: hash['operationId'],
    parameters: hash['parameters']&.map { |h| Reference.load(h) || Parameter.load(h) },
    request_body: Reference.load(hash['requestBody']) || RequestBody.load(hash['requestBody']),
    callbacks: hash['callbacks']&.map { |k, v| [k, Reference.load(v) || Callback.load(v)] }&.to_h,
    deprecated: hash['deprecated'],
    security: hash['security']&.map { |h| SecurityRequirement.load(h) },
    servers: hash['servers']&.map { |h| Server.load(h) }
  )
end

Instance Method Details

#serializable_hashObject

rubocop:disable Metrics/MethodLength



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/dry_open_api/operation.rb', line 23

def serializable_hash
  {
    'description' => description,
    'responses' => responses.serializable_hash,
    'tags' => tags&.map(&:to_s),
    'summary' => summary,
    'externalDocs' => external_docs&.serializable_hash,
    'operationId' => operation_id,
    'parameters' => parameters&.map(&:serializable_hash),
    'requestBody' => request_body&.serializable_hash,
    'callbacks' => callbacks&.map { |k, v| [k.to_s, v.serializable_hash] }&.to_h,
    'deprecated' => deprecated,
    'security' => security&.map(&:serializable_hash),
    'servers' => servers&.map(&:server)
  }.compact
end