class OasParser::Endpoint

Attributes

method[RW]
path[RW]
raw[RW]

Public Class Methods

new(path, method, raw) click to toggle source
# File lib/oas_parser/endpoint.rb, line 8
def initialize(path, method, raw)
  @path = path
  @method = method
  @raw = raw
end

Public Instance Methods

basic_auth?() click to toggle source
# File lib/oas_parser/endpoint.rb, line 104
def basic_auth?
  return false unless security

  security_schemes.each do |security_schema|
    return true if security_schema['type'] == 'http' && security_schema['scheme'] == 'basic'
  end

  false
end
callback_by_name(name) click to toggle source
# File lib/oas_parser/endpoint.rb, line 88
def callback_by_name(name)
  definition = raw['callbacks'][name]
  raise OasParser::CallbackNotFound.new("Callback not found: '#{name}'") unless definition
  OasParser::Callback.new(self, name, definition)
end
callbacks() click to toggle source
# File lib/oas_parser/endpoint.rb, line 81
def callbacks
  return [] unless raw['callbacks']
  raw['callbacks'].map do |name, definition|
    OasParser::Callback.new(self, name, definition)
  end
end
definition() click to toggle source
# File lib/oas_parser/endpoint.rb, line 14
def definition
  path.definition
end
jwt?() click to toggle source
# File lib/oas_parser/endpoint.rb, line 94
def jwt?
  return false unless security

  security_schemes.each do |security_schema|
    return true if security_schema['bearerFormat'] == 'JWT'
  end

  false
end
operation_id() click to toggle source
# File lib/oas_parser/endpoint.rb, line 18
def operation_id
  operationId
end
parameter_by_name(name) click to toggle source
# File lib/oas_parser/endpoint.rb, line 51
def parameter_by_name(name)
  parameters.each do |parameter|
    return parameter if parameter.name == name
  end

  raise OasParser::ParameterNotFound.new("Parameter not found: '#{name}'")
end
parameters() click to toggle source
# File lib/oas_parser/endpoint.rb, line 22
def parameters
  security_schema_parameters + local_parameters + path.parameters
end
path_parameters() click to toggle source
# File lib/oas_parser/endpoint.rb, line 26
def path_parameters
  parameters.select { |parameter| parameter.in == 'path' }
end
query_parameters() click to toggle source
# File lib/oas_parser/endpoint.rb, line 30
def query_parameters
  parameters.select { |parameter| parameter.in == 'query' }
end
request_body() click to toggle source
# File lib/oas_parser/endpoint.rb, line 59
def request_body
  return false unless raw['requestBody']
  OasParser::RequestBody.new(self, raw['requestBody'])
end
response_by_code(code, use_default: false) click to toggle source
# File lib/oas_parser/endpoint.rb, line 70
def response_by_code(code, use_default: false)
  definition = raw['responses'][code]
  definition ||= raw['responses']['default'] if use_default
  raise OasParser::ResponseCodeNotFound.new("Response code not found: '#{code}'") unless definition
  OasParser::Response.new(self, code, definition)
end
responses() click to toggle source
# File lib/oas_parser/endpoint.rb, line 64
def responses
  raw['responses'].map do |code, definition|
    OasParser::Response.new(self, code, definition)
  end
end
security() click to toggle source
# File lib/oas_parser/endpoint.rb, line 77
def security
  raw['security'] || []
end
security_schema_parameters() click to toggle source
# File lib/oas_parser/endpoint.rb, line 34
def security_schema_parameters
  raw_security_schema_parameters = security_schemes.select do |security_schema|
    security_schema['in'].present? && security_schema['in'].present?
  end

  security_schema_parameter_defaults = {
    'type' => 'string',
    'example' => 'abc123',
    'default' => false,
  }

  raw_security_schema_parameters.map do |definition|
    definition = security_schema_parameter_defaults.merge(definition)
    OasParser::Parameter.new(self, definition)
  end
end
security_schemes() click to toggle source
# File lib/oas_parser/endpoint.rb, line 114
def security_schemes
  security_schemes = security.flat_map(&:keys)

  if definition
    security_schemes = security_schemes + definition.security.flat_map(&:keys)
  end

  security_schemes = security_schemes.uniq

  security_schemes.map do |security_scheme_name|
    definition.components['securitySchemes'][security_scheme_name]
  end
end

Private Instance Methods

local_parameters() click to toggle source
# File lib/oas_parser/endpoint.rb, line 130
def local_parameters
  return [] unless raw['parameters']
  raw['parameters'].map do |definition|
    OasParser::Parameter.new(self, definition)
  end
end