class OasRails::Spec::Components

def add_example(example)

def add_example(example)
  key = Hashable.generate_hash(example)
  @examples[key] = example if @examples[key].nil?
  example_reference(key)
end

def add_parameter(parameter)

def add_parameter(parameter)
  key = parameter.hash_key
  @parameters[key] = parameter unless @parameters.key? key
  parameter_reference(key)
end

def add_request_body(request_body)

def add_request_body(request_body)
  key = request_body.hash_key
  @request_bodies[key] = request_body unless @request_bodies.key? key
  request_body_reference(key)
end

def add_response(response)

def add_response(response)
  key = response.hash_key
  @responses[key] = response unless @responses.key? key
  response_reference(key)
end

def add_schema(schema)

def add_schema(schema)
  key = Hashable.generate_hash(schema)
  @schemas[key] = schema if @schemas[key].nil?
  schema_reference(key)
end

def create_reference(type, name)

def create_reference(type, name)
  "#/components/#{type}/#{name}"
end

def example_reference(name)

def example_reference(name)
  Reference.new(create_reference('examples', name))
end

def initialize(specification)

def initialize(specification)
  @specification = specification
  @schemas = {}
  @parameters = {}
  @security_schemes = OasRails.config.security_schemas
  @request_bodies = {}
  @responses = {}
  @headers = {}
  @examples = {}
  @links = {}
  @callbacks = {}
end

def oas_fields

def oas_fields
  [:request_bodies, :examples, :responses, :schemas, :parameters, :security_schemes]
end

def parameter_reference(name)

def parameter_reference(name)
  Reference.new(create_reference('parameters', name))
end

def request_body_reference(name)

def request_body_reference(name)
  Reference.new(create_reference('requestBodies', name))
end

def response_reference(name)

def response_reference(name)
  Reference.new(create_reference('responses', name))
end

def schema_reference(name)

def schema_reference(name)
  Reference.new(create_reference('schemas', name))
end