openapi3_parser 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/.rspec +1 -0
- data/.rubocop.yml +9 -0
- data/.ruby-version +1 -0
- data/.travis.yml +4 -0
- data/Gemfile +5 -0
- data/LICENCE +19 -0
- data/README.md +32 -0
- data/Rakefile +10 -0
- data/TODO.md +30 -0
- data/lib/openapi3_parser.rb +39 -0
- data/lib/openapi3_parser/context.rb +54 -0
- data/lib/openapi3_parser/document.rb +48 -0
- data/lib/openapi3_parser/error.rb +5 -0
- data/lib/openapi3_parser/fields/map.rb +83 -0
- data/lib/openapi3_parser/node.rb +115 -0
- data/lib/openapi3_parser/node/map.rb +24 -0
- data/lib/openapi3_parser/node/object.rb +28 -0
- data/lib/openapi3_parser/node_factories/array.rb +105 -0
- data/lib/openapi3_parser/node_factories/callback.rb +26 -0
- data/lib/openapi3_parser/node_factories/components.rb +83 -0
- data/lib/openapi3_parser/node_factories/contact.rb +24 -0
- data/lib/openapi3_parser/node_factories/discriminator.rb +31 -0
- data/lib/openapi3_parser/node_factories/encoding.rb +34 -0
- data/lib/openapi3_parser/node_factories/example.rb +25 -0
- data/lib/openapi3_parser/node_factories/external_documentation.rb +23 -0
- data/lib/openapi3_parser/node_factories/header.rb +36 -0
- data/lib/openapi3_parser/node_factories/info.rb +28 -0
- data/lib/openapi3_parser/node_factories/license.rb +22 -0
- data/lib/openapi3_parser/node_factories/link.rb +40 -0
- data/lib/openapi3_parser/node_factories/map.rb +110 -0
- data/lib/openapi3_parser/node_factories/media_type.rb +44 -0
- data/lib/openapi3_parser/node_factories/oauth_flow.rb +24 -0
- data/lib/openapi3_parser/node_factories/oauth_flows.rb +31 -0
- data/lib/openapi3_parser/node_factories/openapi.rb +50 -0
- data/lib/openapi3_parser/node_factories/operation.rb +76 -0
- data/lib/openapi3_parser/node_factories/parameter.rb +43 -0
- data/lib/openapi3_parser/node_factories/parameter/parameter_like.rb +37 -0
- data/lib/openapi3_parser/node_factories/path_item.rb +75 -0
- data/lib/openapi3_parser/node_factories/paths.rb +32 -0
- data/lib/openapi3_parser/node_factories/reference.rb +33 -0
- data/lib/openapi3_parser/node_factories/request_body.rb +31 -0
- data/lib/openapi3_parser/node_factories/response.rb +45 -0
- data/lib/openapi3_parser/node_factories/responses.rb +32 -0
- data/lib/openapi3_parser/node_factories/schema.rb +106 -0
- data/lib/openapi3_parser/node_factories/security_requirement.rb +25 -0
- data/lib/openapi3_parser/node_factories/security_scheme.rb +35 -0
- data/lib/openapi3_parser/node_factories/server.rb +32 -0
- data/lib/openapi3_parser/node_factories/server_variable.rb +28 -0
- data/lib/openapi3_parser/node_factories/tag.rb +24 -0
- data/lib/openapi3_parser/node_factories/xml.rb +25 -0
- data/lib/openapi3_parser/node_factory.rb +126 -0
- data/lib/openapi3_parser/node_factory/field_config.rb +88 -0
- data/lib/openapi3_parser/node_factory/map.rb +39 -0
- data/lib/openapi3_parser/node_factory/object.rb +80 -0
- data/lib/openapi3_parser/node_factory/object/node_builder.rb +85 -0
- data/lib/openapi3_parser/node_factory/object/validator.rb +102 -0
- data/lib/openapi3_parser/node_factory/optional_reference.rb +23 -0
- data/lib/openapi3_parser/nodes/array.rb +26 -0
- data/lib/openapi3_parser/nodes/callback.rb +11 -0
- data/lib/openapi3_parser/nodes/components.rb +47 -0
- data/lib/openapi3_parser/nodes/contact.rb +23 -0
- data/lib/openapi3_parser/nodes/discriminator.rb +19 -0
- data/lib/openapi3_parser/nodes/encoding.rb +31 -0
- data/lib/openapi3_parser/nodes/example.rb +27 -0
- data/lib/openapi3_parser/nodes/external_documentation.rb +19 -0
- data/lib/openapi3_parser/nodes/header.rb +13 -0
- data/lib/openapi3_parser/nodes/info.rb +35 -0
- data/lib/openapi3_parser/nodes/license.rb +19 -0
- data/lib/openapi3_parser/nodes/link.rb +35 -0
- data/lib/openapi3_parser/nodes/map.rb +11 -0
- data/lib/openapi3_parser/nodes/media_type.rb +27 -0
- data/lib/openapi3_parser/nodes/oauth_flow.rb +27 -0
- data/lib/openapi3_parser/nodes/oauth_flows.rb +27 -0
- data/lib/openapi3_parser/nodes/openapi.rb +44 -0
- data/lib/openapi3_parser/nodes/operation.rb +59 -0
- data/lib/openapi3_parser/nodes/parameter.rb +21 -0
- data/lib/openapi3_parser/nodes/parameter/parameter_like.rb +53 -0
- data/lib/openapi3_parser/nodes/path_item.rb +59 -0
- data/lib/openapi3_parser/nodes/paths.rb +11 -0
- data/lib/openapi3_parser/nodes/request_body.rb +23 -0
- data/lib/openapi3_parser/nodes/response.rb +27 -0
- data/lib/openapi3_parser/nodes/responses.rb +15 -0
- data/lib/openapi3_parser/nodes/schema.rb +159 -0
- data/lib/openapi3_parser/nodes/security_requirement.rb +11 -0
- data/lib/openapi3_parser/nodes/security_scheme.rb +44 -0
- data/lib/openapi3_parser/nodes/server.rb +25 -0
- data/lib/openapi3_parser/nodes/server_variable.rb +23 -0
- data/lib/openapi3_parser/nodes/tag.rb +23 -0
- data/lib/openapi3_parser/nodes/xml.rb +31 -0
- data/lib/openapi3_parser/validation/error.rb +14 -0
- data/lib/openapi3_parser/validation/error_collection.rb +36 -0
- data/lib/openapi3_parser/version.rb +5 -0
- data/openapi3_parser.gemspec +28 -0
- metadata +208 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Openapi3Parser
|
|
4
|
+
module Node
|
|
5
|
+
module Map
|
|
6
|
+
include Enumerable
|
|
7
|
+
|
|
8
|
+
attr_reader :node_data, :node_context
|
|
9
|
+
|
|
10
|
+
def initialize(data, context)
|
|
11
|
+
@node_data = data
|
|
12
|
+
@node_context = context
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def [](value)
|
|
16
|
+
node_data[value]
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def each(&block)
|
|
20
|
+
node_data.each(&block)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Openapi3Parser
|
|
4
|
+
module Node
|
|
5
|
+
module Object
|
|
6
|
+
include Enumerable
|
|
7
|
+
|
|
8
|
+
attr_reader :node_data, :node_context
|
|
9
|
+
|
|
10
|
+
def initialize(data, context)
|
|
11
|
+
@node_data = data
|
|
12
|
+
@node_context = context
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def [](value)
|
|
16
|
+
node_data[value]
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def extension(value)
|
|
20
|
+
node_data["x-#{value}"]
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def each(&block)
|
|
24
|
+
node_data.each(&block)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "openapi3_parser/node_factory"
|
|
4
|
+
require "openapi3_parser/nodes/array"
|
|
5
|
+
require "openapi3_parser/validation/error"
|
|
6
|
+
|
|
7
|
+
module Openapi3Parser
|
|
8
|
+
module NodeFactories
|
|
9
|
+
class Array
|
|
10
|
+
include NodeFactory
|
|
11
|
+
input_type ::Array
|
|
12
|
+
|
|
13
|
+
def initialize(
|
|
14
|
+
context,
|
|
15
|
+
value_input_type: nil,
|
|
16
|
+
value_factory: nil,
|
|
17
|
+
validate: nil
|
|
18
|
+
)
|
|
19
|
+
super(context)
|
|
20
|
+
@given_value_input_type = value_input_type
|
|
21
|
+
@given_value_factory = value_factory
|
|
22
|
+
@given_validate = validate
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
attr_reader :given_value_input_type, :given_value_factory,
|
|
28
|
+
:given_validate
|
|
29
|
+
|
|
30
|
+
def process_input(input)
|
|
31
|
+
input.each_with_index.map do |value, i|
|
|
32
|
+
if value_factory?
|
|
33
|
+
initialize_value_factory(context.next_namespace(i))
|
|
34
|
+
else
|
|
35
|
+
value
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def validate(input, context)
|
|
41
|
+
given_validate&.call(input, context)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def validate_input(error_collection)
|
|
45
|
+
super(error_collection)
|
|
46
|
+
processed_input.each do |value|
|
|
47
|
+
next unless value.respond_to?(:errors)
|
|
48
|
+
error_collection.merge(value.errors)
|
|
49
|
+
end
|
|
50
|
+
error_collection.merge(
|
|
51
|
+
validate_value_input_type(processed_input, context)
|
|
52
|
+
)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def build_node(input)
|
|
56
|
+
check_value_input_type(input)
|
|
57
|
+
data = input.map do |value|
|
|
58
|
+
value.respond_to?(:node) ? value.node : value
|
|
59
|
+
end
|
|
60
|
+
build_array(data, context)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def build_array(data, context)
|
|
64
|
+
Nodes::Array.new(data, context)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def value_factory?
|
|
68
|
+
!given_value_factory.nil?
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def initialize_value_factory(context)
|
|
72
|
+
factory = given_value_factory
|
|
73
|
+
return factory.new(context) if factory.is_a?(Class)
|
|
74
|
+
factory.call(context)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def validate_value_input_type(input, context)
|
|
78
|
+
input.each_with_index.each_with_object([]) do |(value, i), memo|
|
|
79
|
+
error = error_for_value_input_type(value)
|
|
80
|
+
next unless error
|
|
81
|
+
memo << Validation::Error.new(
|
|
82
|
+
context.next_namespace(i), error
|
|
83
|
+
)
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def check_value_input_type(input)
|
|
88
|
+
input.each_with_index do |value, i|
|
|
89
|
+
error = error_for_value_input_type(value)
|
|
90
|
+
next unless error
|
|
91
|
+
next_context = context.next_namespace(i)
|
|
92
|
+
raise Openapi3Parser::Error,
|
|
93
|
+
"Invalid type for #{next_context.stringify_namespace}. "\
|
|
94
|
+
"#{error}"
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def error_for_value_input_type(value)
|
|
99
|
+
type = given_value_input_type
|
|
100
|
+
return unless type
|
|
101
|
+
"Expected #{type}" unless value.is_a?(type)
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "openapi3_parser/node_factory/map"
|
|
4
|
+
require "openapi3_parser/node_factories/path_item"
|
|
5
|
+
require "openapi3_parser/nodes/callback"
|
|
6
|
+
|
|
7
|
+
module Openapi3Parser
|
|
8
|
+
module NodeFactories
|
|
9
|
+
class Callback
|
|
10
|
+
include NodeFactory::Map
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
|
|
14
|
+
def process_input(input)
|
|
15
|
+
input.each_with_object({}) do |(key, value), memo|
|
|
16
|
+
memo[key] = value if extension?(key)
|
|
17
|
+
memo[key] = NodeFactories::PathItem.new(context.next_namespace(key))
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def build_map(data, context)
|
|
22
|
+
Nodes::Callback.new(data, context)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "openapi3_parser/nodes/components"
|
|
4
|
+
require "openapi3_parser/node_factory/object"
|
|
5
|
+
require "openapi3_parser/node_factory/optional_reference"
|
|
6
|
+
require "openapi3_parser/node_factories/map"
|
|
7
|
+
require "openapi3_parser/node_factories/schema"
|
|
8
|
+
require "openapi3_parser/node_factories/response"
|
|
9
|
+
require "openapi3_parser/node_factories/parameter"
|
|
10
|
+
require "openapi3_parser/node_factories/example"
|
|
11
|
+
require "openapi3_parser/node_factories/request_body"
|
|
12
|
+
require "openapi3_parser/node_factories/header"
|
|
13
|
+
require "openapi3_parser/node_factories/security_scheme"
|
|
14
|
+
require "openapi3_parser/node_factories/link"
|
|
15
|
+
require "openapi3_parser/node_factories/callback"
|
|
16
|
+
|
|
17
|
+
module Openapi3Parser
|
|
18
|
+
module NodeFactories
|
|
19
|
+
class Components
|
|
20
|
+
include NodeFactory::Object
|
|
21
|
+
|
|
22
|
+
allow_extensions
|
|
23
|
+
field "schemas", factory: :schemas_factory
|
|
24
|
+
field "responses", factory: :responses_factory
|
|
25
|
+
field "parameters", factory: :parameters_factory
|
|
26
|
+
field "examples", factory: :examples_factory
|
|
27
|
+
field "requestBodies", factory: :request_bodies_factory
|
|
28
|
+
field "headers", factory: :headers_factory
|
|
29
|
+
field "securitySchemes", factory: :security_schemes_factory
|
|
30
|
+
field "links", factory: :links_factory
|
|
31
|
+
field "callbacks", factory: :callbacks_factory
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
|
|
35
|
+
def build_object(data, context)
|
|
36
|
+
Nodes::Components.new(data, context)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def schemas_factory(context)
|
|
40
|
+
referenceable_map_factory(context, NodeFactories::Schema)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def responses_factory(context)
|
|
44
|
+
referenceable_map_factory(context, NodeFactories::Response)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def parameters_factory(context)
|
|
48
|
+
referenceable_map_factory(context, NodeFactories::Parameter)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def examples_factory(context)
|
|
52
|
+
referenceable_map_factory(context, NodeFactories::Example)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def request_bodies_factory(context)
|
|
56
|
+
referenceable_map_factory(context, NodeFactories::RequestBody)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def headers_factory(context)
|
|
60
|
+
referenceable_map_factory(context, NodeFactories::Header)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def security_schemes_factory(context)
|
|
64
|
+
referenceable_map_factory(context, NodeFactories::SecurityScheme)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def links_factory(context)
|
|
68
|
+
referenceable_map_factory(context, NodeFactories::Link)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def callbacks_factory(context)
|
|
72
|
+
referenceable_map_factory(context, NodeFactories::Callback)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def referenceable_map_factory(context, factory)
|
|
76
|
+
NodeFactories::Map.new(
|
|
77
|
+
context,
|
|
78
|
+
value_factory: NodeFactory::OptionalReference.new(factory)
|
|
79
|
+
)
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "openapi3_parser/nodes/contact"
|
|
4
|
+
require "openapi3_parser/node_factory/object"
|
|
5
|
+
|
|
6
|
+
module Openapi3Parser
|
|
7
|
+
module NodeFactories
|
|
8
|
+
class Contact
|
|
9
|
+
include NodeFactory::Object
|
|
10
|
+
|
|
11
|
+
allow_extensions
|
|
12
|
+
|
|
13
|
+
field "name", input_type: String
|
|
14
|
+
field "url", input_type: String
|
|
15
|
+
field "email", input_type: String
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
|
|
19
|
+
def build_object(data, context)
|
|
20
|
+
Nodes::Contact.new(data, context)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "openapi3_parser/nodes/discriminator"
|
|
4
|
+
require "openapi3_parser/node_factory/object"
|
|
5
|
+
|
|
6
|
+
module Openapi3Parser
|
|
7
|
+
module NodeFactories
|
|
8
|
+
class Discriminator
|
|
9
|
+
include NodeFactory::Object
|
|
10
|
+
|
|
11
|
+
field "propertyName", input_type: String, required: true
|
|
12
|
+
field "mapping", input_type: Hash,
|
|
13
|
+
validate: :validate_mapping,
|
|
14
|
+
default: -> { {}.freeze }
|
|
15
|
+
|
|
16
|
+
private
|
|
17
|
+
|
|
18
|
+
def build_object(data, context)
|
|
19
|
+
Nodes::Discriminator.new(data, context)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def validate_mapping(input)
|
|
23
|
+
return if input.empty?
|
|
24
|
+
string_keys = input.keys.map(&:class).uniq == [String]
|
|
25
|
+
string_values = input.values.map(&:class).uniq == [String]
|
|
26
|
+
valid = string_keys && string_values
|
|
27
|
+
return "Expected string keys and string values" unless valid
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "openapi3_parser/nodes/encoding"
|
|
4
|
+
require "openapi3_parser/node_factory/object"
|
|
5
|
+
require "openapi3_parser/node_factory/optional_reference"
|
|
6
|
+
require "openapi3_parser/node_factories/map"
|
|
7
|
+
require "openapi3_parser/node_factories/header"
|
|
8
|
+
|
|
9
|
+
module Openapi3Parser
|
|
10
|
+
module NodeFactories
|
|
11
|
+
class Encoding
|
|
12
|
+
include NodeFactory::Object
|
|
13
|
+
|
|
14
|
+
allow_extensions
|
|
15
|
+
|
|
16
|
+
field "contentType", input_type: String
|
|
17
|
+
field "headers", factory: :headers_factory
|
|
18
|
+
field "style", input_type: String
|
|
19
|
+
field "explode", input_type: :boolean, default: true
|
|
20
|
+
field "allowReserved", input_type: :boolean, default: false
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
def build_object(data, context)
|
|
25
|
+
Nodes::Encoding.new(data, context)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def headers_factory(context)
|
|
29
|
+
factory = NodeFactory::OptionalReference.new(NodeFactories::Header)
|
|
30
|
+
NodeFactories::Map.new(context, value_factory: factory)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "openapi3_parser/nodes/example"
|
|
4
|
+
require "openapi3_parser/node_factory/object"
|
|
5
|
+
|
|
6
|
+
module Openapi3Parser
|
|
7
|
+
module NodeFactories
|
|
8
|
+
class Example
|
|
9
|
+
include NodeFactory::Object
|
|
10
|
+
|
|
11
|
+
allow_extensions
|
|
12
|
+
|
|
13
|
+
field "summary", input_type: String
|
|
14
|
+
field "description", input_type: String
|
|
15
|
+
field "value"
|
|
16
|
+
field "externalValue", input_type: String
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
def build_object(data, context)
|
|
21
|
+
Nodes::Example.new(data, context)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "openapi3_parser/nodes/external_documentation"
|
|
4
|
+
require "openapi3_parser/node_factory/object"
|
|
5
|
+
|
|
6
|
+
module Openapi3Parser
|
|
7
|
+
module NodeFactories
|
|
8
|
+
class ExternalDocumentation
|
|
9
|
+
include NodeFactory::Object
|
|
10
|
+
|
|
11
|
+
allow_extensions
|
|
12
|
+
|
|
13
|
+
field "description", input_type: String
|
|
14
|
+
field "url", required: true, input_type: String
|
|
15
|
+
|
|
16
|
+
private
|
|
17
|
+
|
|
18
|
+
def build_object(data, context)
|
|
19
|
+
Nodes::ExternalDocumentation.new(data, context)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "openapi3_parser/nodes/header"
|
|
4
|
+
require "openapi3_parser/node_factories/parameter/parameter_like"
|
|
5
|
+
require "openapi3_parser/node_factory/object"
|
|
6
|
+
|
|
7
|
+
module Openapi3Parser
|
|
8
|
+
module NodeFactories
|
|
9
|
+
class Header
|
|
10
|
+
include NodeFactory::Object
|
|
11
|
+
include Parameter::ParameterLike
|
|
12
|
+
|
|
13
|
+
allow_extensions
|
|
14
|
+
|
|
15
|
+
field "description", input_type: String
|
|
16
|
+
field "required", input_type: :boolean, default: false
|
|
17
|
+
field "deprecated", input_type: :boolean, default: false
|
|
18
|
+
field "allowEmptyValue", input_type: :boolean, default: false
|
|
19
|
+
|
|
20
|
+
field "style", input_type: String, default: "simple"
|
|
21
|
+
field "explode", input_type: :boolean, default: :default_explode
|
|
22
|
+
field "allowReserved", input_type: :boolean, default: false
|
|
23
|
+
field "schema", factory: :schema_factory
|
|
24
|
+
field "example"
|
|
25
|
+
field "examples", factory: :examples_factory
|
|
26
|
+
|
|
27
|
+
field "content", factory: :content_factory
|
|
28
|
+
|
|
29
|
+
private
|
|
30
|
+
|
|
31
|
+
def build_object(data, context)
|
|
32
|
+
Nodes::Header.new(data, context)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|