Class: OasParser::Endpoint

Inherits:
Object
  • Object
show all
Includes:
RawAccessor
Defined in:
lib/oas_parser/endpoint.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from RawAccessor

included, #method_missing, #respond_to_missing?

Constructor Details

#initialize(path, method, raw) ⇒ Endpoint

Returns a new instance of Endpoint.



8
9
10
11
12
# File 'lib/oas_parser/endpoint.rb', line 8

def initialize(path, method, raw)
  @path = path
  @method = method
  @raw = raw
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class OasParser::RawAccessor

Instance Attribute Details

#methodObject

Returns the value of attribute method.



6
7
8
# File 'lib/oas_parser/endpoint.rb', line 6

def method
  @method
end

#pathObject

Returns the value of attribute path.



6
7
8
# File 'lib/oas_parser/endpoint.rb', line 6

def path
  @path
end

#rawObject

Returns the value of attribute raw.



6
7
8
# File 'lib/oas_parser/endpoint.rb', line 6

def raw
  @raw
end

Instance Method Details

#callback_by_name(name) ⇒ Object

Raises:

  • (StandardError)


66
67
68
69
70
# File 'lib/oas_parser/endpoint.rb', line 66

def callback_by_name(name)
  definition = raw['callbacks'][name]
  raise StandardError.new('So such callback exists') unless definition
  OasParser::Callback.new(self, name, definition)
end

#callbacksObject



59
60
61
62
63
64
# File 'lib/oas_parser/endpoint.rb', line 59

def callbacks
  return [] unless raw['callbacks']
  raw['callbacks'].map do |name, definition|
    OasParser::Callback.new(self, name, definition)
  end
end

#definitionObject



14
15
16
# File 'lib/oas_parser/endpoint.rb', line 14

def definition
  path.definition
end

#jwt?Boolean

Returns:

  • (Boolean)


72
73
74
75
76
77
78
79
80
# File 'lib/oas_parser/endpoint.rb', line 72

def jwt?
  return false unless security

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

  false
end

#parameter_by_name(name) ⇒ Object

Raises:

  • (StandardError)


30
31
32
33
34
35
36
# File 'lib/oas_parser/endpoint.rb', line 30

def parameter_by_name(name)
  parameters.each do |parameter|
    return parameter if parameter.name == name
  end

  raise StandardError.new('So such parameter exists')
end

#parametersObject



18
19
20
# File 'lib/oas_parser/endpoint.rb', line 18

def parameters
  local_parameters + path.parameters
end

#path_parametersObject



22
23
24
# File 'lib/oas_parser/endpoint.rb', line 22

def path_parameters
  parameters.select { |parameter| parameter.in == 'path' }
end

#query_parametersObject



26
27
28
# File 'lib/oas_parser/endpoint.rb', line 26

def query_parameters
  parameters.select { |parameter| parameter.in == 'query' }
end

#request_bodyObject



38
39
40
41
# File 'lib/oas_parser/endpoint.rb', line 38

def request_body
  return false unless raw['requestBody']
  OasParser::RequestBody.new(self, raw['requestBody'])
end

#response_by_code(code) ⇒ Object

Raises:

  • (StandardError)


49
50
51
52
53
# File 'lib/oas_parser/endpoint.rb', line 49

def response_by_code(code)
  definition = raw['responses'][code]
  raise StandardError.new('So such response exists') unless definition
  OasParser::Response.new(self, code, definition)
end

#responsesObject



43
44
45
46
47
# File 'lib/oas_parser/endpoint.rb', line 43

def responses
  raw['responses'].map do |code, definition|
    OasParser::Response.new(self, code, definition)
  end
end

#securityObject



55
56
57
# File 'lib/oas_parser/endpoint.rb', line 55

def security
  raw['security'] || []
end

#security_schemesObject



82
83
84
85
86
87
88
# File 'lib/oas_parser/endpoint.rb', line 82

def security_schemes
  security_schemes = (security.flat_map(&:keys) + definition.security.flat_map(&:keys)).uniq

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