Class: OasCore::Builders::ResponsesBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/oas_core/builders/responses_builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(specification, content_builder: ContentBuilder, response_builder: ResponseBuilder, json_schema_generator: JsonSchemaGenerator, utils: Utils) ⇒ ResponsesBuilder

Returns a new instance of ResponsesBuilder.



6
7
8
9
10
11
12
13
14
# File 'lib/oas_core/builders/responses_builder.rb', line 6

def initialize(specification, content_builder: ContentBuilder, response_builder: ResponseBuilder,
               json_schema_generator: JsonSchemaGenerator, utils: Utils)
  @specification = specification
  @content_builder = content_builder
  @response_builder = response_builder
  @json_schema_generator = json_schema_generator
  @utils = utils
  @responses = Spec::Responses.new(specification)
end

Instance Method Details

#add_default_responses(oas_route, security) ⇒ Object



33
34
35
36
37
38
39
40
# File 'lib/oas_core/builders/responses_builder.rb', line 33

def add_default_responses(oas_route, security)
  return self unless OasCore.config.set_default_responses

  common_errors = determine_common_errors(oas_route, security)
  add_responses_for_errors(common_errors)

  self
end

#buildObject



42
43
44
# File 'lib/oas_core/builders/responses_builder.rb', line 42

def build
  @responses
end

#from_oas_route(oas_route) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/oas_core/builders/responses_builder.rb', line 16

def from_oas_route(oas_route)
  oas_route.tags(:response).each do |tag|
    content = @content_builder.new(@specification).with_schema(tag.content).with_examples_from_tags(oas_route.tags(:response_example).filter do |re|
      re.code == tag.code
    end).build
    response = @response_builder.new(@specification).with_code(tag.code.to_i).with_description(tag.text).with_content(content).build

    @responses.add_response(response)
  end

  oas_route.tags(:response_ref)&.each do |ref_tag|
    @responses.add_reference_response(ref_tag.code, ref_tag.reference)
  end

  self
end