class R2OAS::Schema::V3::ComponentsObject

Public Class Methods

new(routes_data, opts = {}) click to toggle source
Calls superclass method R2OAS::Schema::V3::BaseObject::new
# File lib/r2-oas/schema/v3/object/from_routes/components_object.rb, line 12
def initialize(routes_data, opts = {})
  super(opts)
  @routes_data = routes_data
end

Public Instance Methods

create_doc() click to toggle source
# File lib/r2-oas/schema/v3/object/from_routes/components_object.rb, line 22
def create_doc
  create_doc_for_components_schemas!
  create_doc_for_components_request_bodies!
end
to_doc() click to toggle source
# File lib/r2-oas/schema/v3/object/from_routes/components_object.rb, line 17
def to_doc
  create_doc
  doc
end

Private Instance Methods

components_request_body_docs() click to toggle source
# File lib/r2-oas/schema/v3/object/from_routes/components_object.rb, line 67
def components_request_body_docs
  @routes_data.each_with_object({}) do |(route_el), data|
    path = route_el[:path]
    route_data = route_el[:data]

    components_request_body_object = Components::RequestBodyObject.new(route_data, path, @opts)
    next unless components_request_body_object.generate?

    components_request_body_doc = components_request_body_object.to_doc
    schema_name = components_request_body_object.send(:_components_request_body_name)
    if data[schema_name].present?
      data[schema_name].merge!(components_request_body_doc)
    else
      data[schema_name] = components_request_body_doc
    end
  end
end
components_schema_docs() click to toggle source

e.x.) [

{ path: "/tasks", data: {:verb=>"get", :path=>"/tasks", :tag_name=>"task" } },

]

# File lib/r2-oas/schema/v3/object/from_routes/components_object.rb, line 47
def components_schema_docs
  @routes_data.each_with_object({}) do |(route_el), data|
    path = route_el[:path]
    route_data = route_el[:data]

    path_item_object = PathItemObject.new(route_data, path, @opts)
    path_item_object.http_statuses.each do |http_status|
      components_schema_object = Components::SchemaObject.new(route_data, path, @opts)
      components_schema_doc = components_schema_object.to_doc
      schema_name = components_schema_object.send(:_components_schema_name, http_status)

      if data[schema_name].present?
        data[schema_name].merge!(components_schema_doc)
      else
        data[schema_name] = components_schema_doc
      end
    end
  end
end
create_doc_for_components_request_bodies!() click to toggle source
# File lib/r2-oas/schema/v3/object/from_routes/components_object.rb, line 36
def create_doc_for_components_request_bodies!
  result = components_request_body_docs.each_with_object({}) do |(schema_name, components_request_body_doc), docs|
    docs[schema_name] = components_request_body_doc
  end
  doc.merge!({ 'requestBodies' => result })
end
create_doc_for_components_schemas!() click to toggle source
# File lib/r2-oas/schema/v3/object/from_routes/components_object.rb, line 29
def create_doc_for_components_schemas!
  result = components_schema_docs.each_with_object({}) do |(schema_name, components_schema_doc), docs|
    docs[schema_name] = components_schema_doc
  end
  doc.merge!({ 'schemas' => result })
end