Class: GrapeOAS::ApiModelBuilders::ResponseParsers::DocumentationResponsesParser

Inherits:
Object
  • Object
show all
Includes:
Concerns::OasUtilities, Base
Defined in:
lib/grape_oas/api_model_builders/response_parsers/documentation_responses_parser.rb

Overview

Parser for responses defined in documentation: { responses: { … } } This is the most comprehensive format and aligns with OpenAPI specification

Constant Summary

Constants included from Concerns::OasUtilities

Concerns::OasUtilities::VALID_CONSTANT_PATTERN

Instance Method Summary collapse

Methods included from Concerns::OasUtilities

extract_extensions, #extract_extensions, pluralize, #pluralize, underscore, #underscore, valid_constant_name?, #valid_constant_name?

Instance Method Details

#applicable?(route) ⇒ Boolean

Returns:

  • (Boolean)


12
13
14
# File 'lib/grape_oas/api_model_builders/response_parsers/documentation_responses_parser.rb', line 12

def applicable?(route)
  route.options.dig(:documentation, :responses).is_a?(Hash)
end

#parse(route) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/grape_oas/api_model_builders/response_parsers/documentation_responses_parser.rb', line 16

def parse(route)
  doc_resps = route.options.dig(:documentation, :responses)
  return [] unless doc_resps.is_a?(Hash)

  doc_resps.map do |code, doc|
    doc = normalize_hash_keys(doc)
    {
      code: code,
      message: extract_description(doc),
      headers: doc[:headers],
      entity: extract_entity(doc, route.options[:entity]),
      extensions: extract_extensions(doc),
      examples: doc[:examples]
    }
  end
end