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

#basic_auth?Boolean

Returns:

  • (Boolean)


104
105
106
107
108
109
110
111
112
# 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) ⇒ Object



88
89
90
91
92
# 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

#callbacksObject



81
82
83
84
85
86
# 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

#definitionObject



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

def definition
  path.definition
end

#jwt?Boolean

Returns:

  • (Boolean)


94
95
96
97
98
99
100
101
102
# 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_idObject



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

def operation_id
  operationId
end

#parameter_by_name(name) ⇒ Object



51
52
53
54
55
56
57
# 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

#parametersObject



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

def parameters
  security_schema_parameters + local_parameters + path.parameters
end

#path_parametersObject



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

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

#query_parametersObject



30
31
32
# File 'lib/oas_parser/endpoint.rb', line 30

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

#request_bodyObject



59
60
61
62
# 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) ⇒ Object



70
71
72
73
74
75
# 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

#responsesObject



64
65
66
67
68
# File 'lib/oas_parser/endpoint.rb', line 64

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

#securityObject



77
78
79
# File 'lib/oas_parser/endpoint.rb', line 77

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

#security_schema_parametersObject



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 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_schemesObject



114
115
116
117
118
119
120
121
122
123
124
125
126
# 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