openapi3_parser 0.3.0 → 0.4.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.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -0
  3. data/.travis.yml +3 -5
  4. data/CHANGELOG.md +7 -0
  5. data/README.md +2 -2
  6. data/TODO.md +9 -2
  7. data/lib/openapi3_parser/context/pointer.rb +2 -0
  8. data/lib/openapi3_parser/document.rb +54 -18
  9. data/lib/openapi3_parser/markdown.rb +15 -0
  10. data/lib/openapi3_parser/{nodes → node}/array.rb +1 -1
  11. data/lib/openapi3_parser/{nodes → node}/callback.rb +2 -4
  12. data/lib/openapi3_parser/{nodes → node}/components.rb +2 -4
  13. data/lib/openapi3_parser/{nodes → node}/contact.rb +2 -4
  14. data/lib/openapi3_parser/{nodes → node}/discriminator.rb +2 -4
  15. data/lib/openapi3_parser/{nodes → node}/encoding.rb +2 -4
  16. data/lib/openapi3_parser/{nodes → node}/example.rb +7 -4
  17. data/lib/openapi3_parser/{nodes → node}/external_documentation.rb +7 -4
  18. data/lib/openapi3_parser/{nodes → node}/header.rb +4 -5
  19. data/lib/openapi3_parser/{nodes → node}/info.rb +9 -6
  20. data/lib/openapi3_parser/{nodes → node}/license.rb +2 -4
  21. data/lib/openapi3_parser/{nodes → node}/link.rb +7 -4
  22. data/lib/openapi3_parser/node/map.rb +1 -1
  23. data/lib/openapi3_parser/{nodes → node}/media_type.rb +2 -4
  24. data/lib/openapi3_parser/{nodes → node}/oauth_flow.rb +2 -4
  25. data/lib/openapi3_parser/{nodes → node}/oauth_flows.rb +2 -4
  26. data/lib/openapi3_parser/node/object.rb +11 -1
  27. data/lib/openapi3_parser/{nodes → node}/openapi.rb +6 -8
  28. data/lib/openapi3_parser/{nodes → node}/operation.rb +11 -8
  29. data/lib/openapi3_parser/{nodes → node}/parameter.rb +3 -4
  30. data/lib/openapi3_parser/node/parameter_like.rb +70 -0
  31. data/lib/openapi3_parser/{nodes → node}/path_item.rb +9 -6
  32. data/lib/openapi3_parser/{nodes → node}/paths.rb +2 -4
  33. data/lib/openapi3_parser/{nodes → node}/request_body.rb +7 -4
  34. data/lib/openapi3_parser/{nodes → node}/response.rb +7 -4
  35. data/lib/openapi3_parser/{nodes → node}/responses.rb +2 -4
  36. data/lib/openapi3_parser/{nodes → node}/schema.rb +12 -9
  37. data/lib/openapi3_parser/{nodes → node}/security_requirement.rb +2 -4
  38. data/lib/openapi3_parser/{nodes → node}/security_scheme.rb +7 -5
  39. data/lib/openapi3_parser/{nodes → node}/server.rb +7 -4
  40. data/lib/openapi3_parser/{nodes → node}/server_variable.rb +8 -5
  41. data/lib/openapi3_parser/{nodes → node}/tag.rb +7 -4
  42. data/lib/openapi3_parser/{nodes → node}/xml.rb +2 -4
  43. data/lib/openapi3_parser/node_factories/array.rb +10 -4
  44. data/lib/openapi3_parser/node_factories/callback.rb +2 -2
  45. data/lib/openapi3_parser/node_factories/components.rb +5 -3
  46. data/lib/openapi3_parser/node_factories/contact.rb +10 -4
  47. data/lib/openapi3_parser/node_factories/discriminator.rb +2 -2
  48. data/lib/openapi3_parser/node_factories/encoding.rb +7 -3
  49. data/lib/openapi3_parser/node_factories/example.rb +8 -3
  50. data/lib/openapi3_parser/node_factories/external_documentation.rb +7 -3
  51. data/lib/openapi3_parser/node_factories/header.rb +2 -2
  52. data/lib/openapi3_parser/node_factories/info.rb +6 -3
  53. data/lib/openapi3_parser/node_factories/license.rb +6 -3
  54. data/lib/openapi3_parser/node_factories/link.rb +4 -2
  55. data/lib/openapi3_parser/node_factories/map.rb +12 -4
  56. data/lib/openapi3_parser/node_factories/media_type.rb +36 -5
  57. data/lib/openapi3_parser/node_factories/oauth_flow.rb +2 -2
  58. data/lib/openapi3_parser/node_factories/oauth_flows.rb +2 -2
  59. data/lib/openapi3_parser/node_factories/openapi.rb +13 -3
  60. data/lib/openapi3_parser/node_factories/operation.rb +11 -3
  61. data/lib/openapi3_parser/node_factories/parameter.rb +28 -3
  62. data/lib/openapi3_parser/node_factories/parameter/parameter_like.rb +9 -5
  63. data/lib/openapi3_parser/node_factories/path_item.rb +26 -7
  64. data/lib/openapi3_parser/node_factories/paths.rb +51 -2
  65. data/lib/openapi3_parser/node_factories/reference.rb +4 -0
  66. data/lib/openapi3_parser/node_factories/request_body.rb +32 -3
  67. data/lib/openapi3_parser/node_factories/response.rb +24 -4
  68. data/lib/openapi3_parser/node_factories/responses.rb +28 -2
  69. data/lib/openapi3_parser/node_factories/schema.rb +17 -3
  70. data/lib/openapi3_parser/node_factories/security_requirement.rb +2 -2
  71. data/lib/openapi3_parser/node_factories/security_scheme.rb +2 -2
  72. data/lib/openapi3_parser/node_factories/server.rb +2 -2
  73. data/lib/openapi3_parser/node_factories/server_variable.rb +2 -2
  74. data/lib/openapi3_parser/node_factories/tag.rb +2 -2
  75. data/lib/openapi3_parser/node_factories/xml.rb +6 -3
  76. data/lib/openapi3_parser/node_factory.rb +10 -4
  77. data/lib/openapi3_parser/node_factory/fields/reference.rb +4 -0
  78. data/lib/openapi3_parser/node_factory/map.rb +10 -0
  79. data/lib/openapi3_parser/node_factory/object.rb +29 -0
  80. data/lib/openapi3_parser/node_factory/object/validator.rb +69 -6
  81. data/lib/openapi3_parser/source/reference.rb +2 -0
  82. data/lib/openapi3_parser/source/reference_resolver.rb +5 -1
  83. data/lib/openapi3_parser/validators/absolute_uri.rb +14 -0
  84. data/lib/openapi3_parser/validators/component_keys.rb +17 -0
  85. data/lib/openapi3_parser/validators/duplicate_parameters.rb +30 -0
  86. data/lib/openapi3_parser/validators/email.rb +23 -0
  87. data/lib/openapi3_parser/validators/media_type.rb +20 -0
  88. data/lib/openapi3_parser/validators/url.rb +18 -0
  89. data/lib/openapi3_parser/version.rb +1 -1
  90. data/openapi3_parser.gemspec +5 -2
  91. metadata +70 -36
  92. data/lib/openapi3_parser/nodes/map.rb +0 -17
  93. data/lib/openapi3_parser/nodes/parameter/parameter_like.rb +0 -67
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 651f457272264ca4fc7b45040203a9fa7deeabde
4
- data.tar.gz: b00561ee20a2c121d9f1d030511b07870cd66ecc
3
+ metadata.gz: 39b97559bdb240544c9f0f65b848c71edc28af1c
4
+ data.tar.gz: b8b1339e8d116a202a16ada58ffb75cf403f608f
5
5
  SHA512:
6
- metadata.gz: a38facc684d56b0194066ba88db7396107d882bc225fa07f14600bf21a5156c2f6032f8b284bac5146a6f3a9e792147e63fd35ca915b8b8d2f36fe57e738a662
7
- data.tar.gz: f605fd5997afe6055b6e627eaca9971dd60dd6f2fbc19381a363490a596f46cf001317aed21130c4273115143c6353516c035747ab16867b62ece619434b6b1a
6
+ metadata.gz: 5a9772d8bfd2c67b3736f32aa25d937c08c1fc76f8142bc92685f3cc2f0202a7c74f313d6e836d1ddcf92b15b99084b94e056d53ed299b437eefd15f56387eff
7
+ data.tar.gz: c47362a370307d40b1497e8b1c67e58ce267efaa611e0f0b49765ab3f2769635aba04f67f611250a1125116cadca09ac4d6d6372290253069192336c641169ba
@@ -7,3 +7,7 @@ Documentation:
7
7
  Metrics/BlockLength:
8
8
  Exclude:
9
9
  - 'spec/**/*.rb'
10
+ Naming/UncommunicativeMethodParamName:
11
+ Enabled: false
12
+ Naming/UncommunicativeBlockParamName:
13
+ Enabled: false
@@ -1,13 +1,11 @@
1
1
  language: ruby
2
2
  sudo: false
3
3
  rvm:
4
- - 2.3.6
5
- - 2.4.3
6
- - jruby-9.1.15.0
4
+ - 2.3.7
5
+ - 2.4.4
6
+ - 2.5.1
7
7
  - ruby-head
8
- - jruby-head
9
8
  matrix:
10
9
  allow_failures:
11
10
  - rvm: ruby-head
12
- - rvm: jruby-head
13
11
  fast_finish: true
@@ -1,3 +1,10 @@
1
+ # 0.4.0
2
+
3
+ - Determine the OpenAPI specification version and store it in document.
4
+ - Support commonmark rendering, add description_html methods to nodes which
5
+ allow description to be rendered as HTML.
6
+ - Fix bug with CGI constant unresolved
7
+
1
8
  # 0.3.0
2
9
 
3
10
  - Allow opening files by URL
data/README.md CHANGED
@@ -23,7 +23,7 @@ Documentation for the API to navigate the OpenAPI nodes is available on
23
23
  [rubydoc.info][docs].
24
24
 
25
25
  [openapi-3]: https://github.com/OAI/OpenAPI-Specification
26
- [docs]: http://www.rubydoc.info/github/kevindew/openapi3_parser/Openapi3Parser/Nodes/Openapi
26
+ [docs]: http://www.rubydoc.info/github/kevindew/openapi3_parser/Openapi3Parser/Node/Openapi
27
27
 
28
28
  ## Installation
29
29
 
@@ -31,7 +31,7 @@ You can install this gem into your bundler application by adding this line to
31
31
  your Gemfile:
32
32
 
33
33
  ```
34
- gem "openapi3_parser", "~> 0.2.0"
34
+ gem "openapi3_parser", "~> 0.3.0"
35
35
  ```
36
36
 
37
37
  and then running `$ bundle install`
data/TODO.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  These are the steps defined to reach 1.0. Assistance is very welcome.
4
4
 
5
- - [ ] Handle mutually exclusive fields
5
+ - [x] Handle mutually exclusive fields
6
6
  - [ ] Refactor the various NodeFactory modules to be a less confusing
7
7
  hierachical structure. Consider having factories subclass instead of use
8
8
  mixin
@@ -14,7 +14,7 @@ These are the steps defined to reach 1.0. Assistance is very welcome.
14
14
  - [x] Allow opening of openapi documents by URL
15
15
  - [x] Support references by URL
16
16
  - [ ] Consider option to limit open by URL/path behaviour
17
- - [ ] Support converting CommonMark to HTML
17
+ - [x] Support converting CommonMark to HTML
18
18
  - [ ] Reach parity with OpenAPI specification for validation
19
19
  - [ ] Consider a lenient mode for a document to only have to comply with type
20
20
  based validation
@@ -32,3 +32,10 @@ These are the steps defined to reach 1.0. Assistance is very welcome.
32
32
  - [x] Ensure Array and Map nodes return empty ones by default rather than nil
33
33
  - [ ] Make JSON pointer public access to be consistent accepting string, array
34
34
  or (potentially) a pointer class
35
+ - [ ] Support creating a default Server object on servers property of OpenAPI
36
+ Node
37
+ - [ ] Support relative URLs being able to be relative the first server object
38
+ see: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#relative-references-in-urls
39
+ - [ ] Support validating a Server URL based on default values
40
+ - [ ] Validate paths to check path parameters within them appear in paths
41
+ see: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#fixed-fields-10
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "cgi"
4
+
3
5
  module Openapi3Parser
4
6
  class Context
5
7
  # A class to decorate the array of fields that make up a pointer and
@@ -13,12 +13,21 @@ module Openapi3Parser
13
13
  # Document is the root construct of a created OpenAPI Document and can be
14
14
  # used to navigate the contents of a document or to check it's validity.
15
15
  #
16
- # @attr_reader [Source] root_source
16
+ # @attr_reader [String] openapi_version
17
+ # @attr_reader [Source] root_source
18
+ # @attr_reader [Array<String>] warnings
17
19
  class Document
18
20
  extend Forwardable
19
21
  include Enumerable
20
22
 
21
- attr_reader :root_source
23
+ attr_reader :openapi_version, :root_source, :warnings
24
+
25
+ # A collection of the openapi versions that are supported
26
+ SUPPORTED_OPENAPI_VERSIONS = %w[3.0].freeze
27
+
28
+ # The version of OpenAPI that will be used by default for
29
+ # validation/construction
30
+ DEFAULT_OPENAPI_VERSION = "3.0"
22
31
 
23
32
  # @!method valid?
24
33
  # Whether this OpenAPI document has any validation issues or not. See
@@ -29,36 +38,36 @@ module Openapi3Parser
29
38
 
30
39
  # @!method openapi
31
40
  # The value of the openapi version field for this document
32
- # @see Nodes::Openapi#openapi
41
+ # @see Node::Openapi#openapi
33
42
  # @return [String]
34
43
  # @!method info
35
44
  # The value of the info field on the OpenAPI document
36
- # @see Nodes::Openapi#info
37
- # @return [Nodes::Info]
45
+ # @see Node::Openapi#info
46
+ # @return [Node::Info]
38
47
  # @!method servers
39
48
  # The value of the servers field on the OpenAPI document
40
- # @see Nodes::Openapi#servers
41
- # @return [Nodes::Array<Nodes::Server>]
49
+ # @see Node::Openapi#servers
50
+ # @return [Node::Array<Node::Server>]
42
51
  # @!method paths
43
52
  # The value of the paths field on the OpenAPI document
44
- # @see Nodes::Openapi#paths
45
- # @return [Nodes::Paths]
53
+ # @see Node::Openapi#paths
54
+ # @return [Node::Paths]
46
55
  # @!method components
47
56
  # The value of the components field on the OpenAPI document
48
- # @see Nodes::Openapi#components
49
- # @return [Nodes::Components]
57
+ # @see Node::Openapi#components
58
+ # @return [Node::Components]
50
59
  # @!method security
51
60
  # The value of the security field on the OpenAPI document
52
- # @see Nodes::Openapi#security
53
- # @return [Nodes::Array<Nodes::SecurityRequirement>]
61
+ # @see Node::Openapi#security
62
+ # @return [Node::Array<Node::SecurityRequirement>]
54
63
  # @!method tags
55
64
  # The value of the tags field on the OpenAPI document
56
- # @see Nodes::Openapi#tags
57
- # @return [Nodes::Array<Nodes::Tag>]
65
+ # @see Node::Openapi#tags
66
+ # @return [Node::Array<Node::Tag>]
58
67
  # @!method external_docs
59
68
  # The value of the external_docs field on the OpenAPI document
60
- # @see Nodes::Openapi#external_docs
61
- # @return [Nodes::ExternalDocumentation]
69
+ # @see Node::Openapi#external_docs
70
+ # @return [Node::ExternalDocumentation]
62
71
  # @!method extension
63
72
  # Look up an extension field provided for the root object of the document
64
73
  # @see Node::Object#extension
@@ -78,11 +87,13 @@ module Openapi3Parser
78
87
  def initialize(source_input)
79
88
  @reference_register = ReferenceRegister.new
80
89
  @root_source = Source.new(source_input, self, reference_register)
90
+ @warnings = []
91
+ @openapi_version = determine_openapi_version(root_source.data["openapi"])
81
92
  @build_in_progress = false
82
93
  @built = false
83
94
  end
84
95
 
85
- # @return [Nodes::Openapi]
96
+ # @return [Node::Openapi]
86
97
  def root
87
98
  factory.node
88
99
  end
@@ -125,16 +136,41 @@ module Openapi3Parser
125
136
 
126
137
  attr_reader :reference_register, :built, :build_in_progress
127
138
 
139
+ def add_warning(text)
140
+ @warnings << text
141
+ end
142
+
128
143
  def build
129
144
  return if build_in_progress || built
130
145
  @build_in_progress = true
131
146
  context = Context.root(root_source.data, root_source)
132
147
  @factory = NodeFactories::Openapi.new(context)
133
148
  reference_register.freeze
149
+ @warnings.freeze
134
150
  @build_in_progress = false
135
151
  @built = true
136
152
  end
137
153
 
154
+ def determine_openapi_version(version)
155
+ minor_version = (version || "").split(".").first(2).join(".")
156
+
157
+ if SUPPORTED_OPENAPI_VERSIONS.include?(minor_version)
158
+ minor_version
159
+ elsif version
160
+ add_warning(
161
+ "Unsupported OpenAPI version (#{version}), treating as a " \
162
+ "#{DEFAULT_OPENAPI_VERSION} document"
163
+ )
164
+ DEFAULT_OPENAPI_VERSION
165
+ else
166
+ add_warning(
167
+ "Unspecified OpenAPI version, treating as a " \
168
+ "#{DEFAULT_OPENAPI_VERSION} document"
169
+ )
170
+ DEFAULT_OPENAPI_VERSION
171
+ end
172
+ end
173
+
138
174
  def factory
139
175
  build unless built
140
176
  @factory
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "commonmarker"
4
+
5
+ module Openapi3Parser
6
+ # Wrapper around a gem to render markdown, used a single place for options
7
+ # and handling the gem
8
+ module Markdown
9
+ # @param [String] text
10
+ # @return [String]
11
+ def self.to_html(text)
12
+ CommonMarker.render_doc(text).to_html
13
+ end
14
+ end
15
+ end
@@ -3,7 +3,7 @@
3
3
  require "openapi3_parser/node/map"
4
4
 
5
5
  module Openapi3Parser
6
- module Nodes
6
+ module Node
7
7
  # An array within a OpenAPI document.
8
8
  # Very similar to a normal Ruby array, however this is read only and knows
9
9
  # the context of where it sits in an OpenAPI document
@@ -3,10 +3,8 @@
3
3
  require "openapi3_parser/node/map"
4
4
 
5
5
  module Openapi3Parser
6
- module Nodes
6
+ module Node
7
7
  # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#callbackObject
8
- class Callback
9
- include Node::Map
10
- end
8
+ class Callback < Node::Map; end
11
9
  end
12
10
  end
@@ -3,11 +3,9 @@
3
3
  require "openapi3_parser/node/object"
4
4
 
5
5
  module Openapi3Parser
6
- module Nodes
6
+ module Node
7
7
  # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#componentsObject
8
- class Components
9
- include Node::Object
10
-
8
+ class Components < Node::Object
11
9
  # @return [Map<String, Schema>]
12
10
  def schemas
13
11
  node_data["schemas"]
@@ -3,11 +3,9 @@
3
3
  require "openapi3_parser/node/object"
4
4
 
5
5
  module Openapi3Parser
6
- module Nodes
6
+ module Node
7
7
  # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#contactObject
8
- class Contact
9
- include Node::Object
10
-
8
+ class Contact < Node::Object
11
9
  # @return [String, nil]
12
10
  def name
13
11
  data["name"]
@@ -3,11 +3,9 @@
3
3
  require "openapi3_parser/node/object"
4
4
 
5
5
  module Openapi3Parser
6
- module Nodes
6
+ module Node
7
7
  # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#discriminatorObject
8
- class Discriminator
9
- include Node::Object
10
-
8
+ class Discriminator < Node::Object
11
9
  # @return [String]
12
10
  def property_name
13
11
  node_data["propertyName"]
@@ -3,11 +3,9 @@
3
3
  require "openapi3_parser/node/object"
4
4
 
5
5
  module Openapi3Parser
6
- module Nodes
6
+ module Node
7
7
  # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#encodingObject
8
- class Encoding
9
- include Node::Object
10
-
8
+ class Encoding < Node::Object
11
9
  # @return [String, nil]
12
10
  def content_type
13
11
  node_data["contentType"]
@@ -3,11 +3,9 @@
3
3
  require "openapi3_parser/node/object"
4
4
 
5
5
  module Openapi3Parser
6
- module Nodes
6
+ module Node
7
7
  # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#exampleObject
8
- class Example
9
- include Node::Object
10
-
8
+ class Example < Node::Object
11
9
  # @return [String, nil]
12
10
  def summary
13
11
  node_data["summary"]
@@ -18,6 +16,11 @@ module Openapi3Parser
18
16
  node_data["description"]
19
17
  end
20
18
 
19
+ # @return [String, nil]
20
+ def description_html
21
+ render_markdown(description)
22
+ end
23
+
21
24
  # @return [Object]
22
25
  def value
23
26
  node_data["value"]
@@ -3,16 +3,19 @@
3
3
  require "openapi3_parser/node/object"
4
4
 
5
5
  module Openapi3Parser
6
- module Nodes
6
+ module Node
7
7
  # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#externalDocumentationObject
8
- class ExternalDocumentation
9
- include Node::Object
10
-
8
+ class ExternalDocumentation < Node::Object
11
9
  # @return [String, nil]
12
10
  def description
13
11
  node_data["description"]
14
12
  end
15
13
 
14
+ # @return [String, nil]
15
+ def description_html
16
+ render_markdown(description)
17
+ end
18
+
16
19
  # @return [String]
17
20
  def url
18
21
  node_data["url"]
@@ -1,14 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "openapi3_parser/node/object"
4
- require "openapi3_parser/nodes/parameter/parameter_like"
4
+ require "openapi3_parser/node/parameter_like"
5
5
 
6
6
  module Openapi3Parser
7
- module Nodes
7
+ module Node
8
8
  # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#headerObject
9
- class Header
10
- include Node::Object
11
- include Parameter::ParameterLike
9
+ class Header < Node::Object
10
+ include ParameterLike
12
11
  end
13
12
  end
14
13
  end
@@ -3,22 +3,25 @@
3
3
  require "openapi3_parser/node/object"
4
4
 
5
5
  module Openapi3Parser
6
- module Nodes
6
+ module Node
7
7
  # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#infoObject
8
- class Info
9
- include Node::Object
10
-
8
+ class Info < Node::Object
11
9
  # @return [String]
12
10
  def title
13
11
  node_data["title"]
14
12
  end
15
13
 
16
- # @return [String, null]
14
+ # @return [String, nil]
17
15
  def description
18
16
  node_data["description"]
19
17
  end
20
18
 
21
- # @return [String, null]
19
+ # @return [String, nil]
20
+ def description_html
21
+ render_markdown(description)
22
+ end
23
+
24
+ # @return [String, nil]
22
25
  def terms_of_service
23
26
  node_data["termsOfService"]
24
27
  end
@@ -3,11 +3,9 @@
3
3
  require "openapi3_parser/node/object"
4
4
 
5
5
  module Openapi3Parser
6
- module Nodes
6
+ module Node
7
7
  # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#licenseObject
8
- class License
9
- include Node::Object
10
-
8
+ class License < Node::Object
11
9
  # @return [String]
12
10
  def name
13
11
  node_data["name"]