openapi3_parser 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/CHANGELOG.md +6 -0
  4. data/README.md +5 -1
  5. data/TODO.md +1 -0
  6. data/lib/openapi3_parser.rb +13 -0
  7. data/lib/openapi3_parser/context.rb +2 -2
  8. data/lib/openapi3_parser/node_factories/array.rb +4 -2
  9. data/lib/openapi3_parser/node_factories/components.rb +4 -0
  10. data/lib/openapi3_parser/node_factories/schema.rb +15 -2
  11. data/lib/openapi3_parser/node_factories/server_variable.rb +10 -2
  12. data/lib/openapi3_parser/node_factory.rb +17 -1
  13. data/lib/openapi3_parser/node_factory/map.rb +4 -0
  14. data/lib/openapi3_parser/node_factory/object.rb +3 -5
  15. data/lib/openapi3_parser/node_factory/object/node_builder.rb +19 -8
  16. data/lib/openapi3_parser/nodes/array.rb +8 -0
  17. data/lib/openapi3_parser/nodes/callback.rb +1 -0
  18. data/lib/openapi3_parser/nodes/components.rb +12 -0
  19. data/lib/openapi3_parser/nodes/contact.rb +4 -0
  20. data/lib/openapi3_parser/nodes/discriminator.rb +3 -0
  21. data/lib/openapi3_parser/nodes/encoding.rb +6 -0
  22. data/lib/openapi3_parser/nodes/example.rb +5 -0
  23. data/lib/openapi3_parser/nodes/external_documentation.rb +3 -0
  24. data/lib/openapi3_parser/nodes/header.rb +1 -0
  25. data/lib/openapi3_parser/nodes/info.rb +7 -0
  26. data/lib/openapi3_parser/nodes/license.rb +3 -0
  27. data/lib/openapi3_parser/nodes/link.rb +7 -0
  28. data/lib/openapi3_parser/nodes/map.rb +6 -0
  29. data/lib/openapi3_parser/nodes/media_type.rb +5 -0
  30. data/lib/openapi3_parser/nodes/oauth_flow.rb +5 -0
  31. data/lib/openapi3_parser/nodes/oauth_flows.rb +5 -0
  32. data/lib/openapi3_parser/nodes/openapi.rb +11 -0
  33. data/lib/openapi3_parser/nodes/operation.rb +16 -0
  34. data/lib/openapi3_parser/nodes/parameter.rb +3 -0
  35. data/lib/openapi3_parser/nodes/parameter/parameter_like.rb +14 -0
  36. data/lib/openapi3_parser/nodes/path_item.rb +14 -0
  37. data/lib/openapi3_parser/nodes/paths.rb +1 -0
  38. data/lib/openapi3_parser/nodes/request_body.rb +4 -0
  39. data/lib/openapi3_parser/nodes/response.rb +5 -0
  40. data/lib/openapi3_parser/nodes/responses.rb +2 -0
  41. data/lib/openapi3_parser/nodes/schema.rb +38 -0
  42. data/lib/openapi3_parser/nodes/security_requirement.rb +1 -0
  43. data/lib/openapi3_parser/nodes/security_scheme.rb +9 -0
  44. data/lib/openapi3_parser/nodes/server.rb +5 -2
  45. data/lib/openapi3_parser/nodes/server_variable.rb +4 -0
  46. data/lib/openapi3_parser/nodes/tag.rb +4 -0
  47. data/lib/openapi3_parser/nodes/xml.rb +8 -2
  48. data/lib/openapi3_parser/version.rb +1 -1
  49. metadata +3 -2
@@ -4,13 +4,16 @@ require "openapi3_parser/node/object"
4
4
 
5
5
  module Openapi3Parser
6
6
  module Nodes
7
+ # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#discriminatorObject
7
8
  class Discriminator
8
9
  include Node::Object
9
10
 
11
+ # @return [String]
10
12
  def property_name
11
13
  node_data["propertyName"]
12
14
  end
13
15
 
16
+ # @return [Map] a map of String: String objects
14
17
  def mapping
15
18
  node_data["mapping"]
16
19
  end
@@ -4,25 +4,31 @@ require "openapi3_parser/node/object"
4
4
 
5
5
  module Openapi3Parser
6
6
  module Nodes
7
+ # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#encodingObject
7
8
  class Encoding
8
9
  include Node::Object
9
10
 
11
+ # @return [String, nil]
10
12
  def content_type
11
13
  node_data["contentType"]
12
14
  end
13
15
 
16
+ # @return [Map] a map of String: {Header}[./Header.html] objects
14
17
  def headers
15
18
  node_data["headers"]
16
19
  end
17
20
 
21
+ # @return [String, nil]
18
22
  def style
19
23
  node_data["style"]
20
24
  end
21
25
 
26
+ # @return [Boolean]
22
27
  def explode?
23
28
  node_data["explode"]
24
29
  end
25
30
 
31
+ # @return [Boolean]
26
32
  def allow_reserved?
27
33
  node_data["allowReserved"]
28
34
  end
@@ -4,21 +4,26 @@ require "openapi3_parser/node/object"
4
4
 
5
5
  module Openapi3Parser
6
6
  module Nodes
7
+ # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#exampleObject
7
8
  class Example
8
9
  include Node::Object
9
10
 
11
+ # @return [String, nil]
10
12
  def summary
11
13
  node_data["summary"]
12
14
  end
13
15
 
16
+ # @return [String, nil]
14
17
  def description
15
18
  node_data["description"]
16
19
  end
17
20
 
21
+ # @return [Object]
18
22
  def value
19
23
  node_data["value"]
20
24
  end
21
25
 
26
+ # @return [String, nil]
22
27
  def external_value
23
28
  node_data["externalValue"]
24
29
  end
@@ -4,13 +4,16 @@ require "openapi3_parser/node/object"
4
4
 
5
5
  module Openapi3Parser
6
6
  module Nodes
7
+ # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#externalDocumentationObject
7
8
  class ExternalDocumentation
8
9
  include Node::Object
9
10
 
11
+ # @return [String, nil]
10
12
  def description
11
13
  node_data["description"]
12
14
  end
13
15
 
16
+ # @return [String]
14
17
  def url
15
18
  node_data["url"]
16
19
  end
@@ -5,6 +5,7 @@ require "openapi3_parser/nodes/parameter/parameter_like"
5
5
 
6
6
  module Openapi3Parser
7
7
  module Nodes
8
+ # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#headerObject
8
9
  class Header
9
10
  include Node::Object
10
11
  include Parameter::ParameterLike
@@ -4,29 +4,36 @@ require "openapi3_parser/node/object"
4
4
 
5
5
  module Openapi3Parser
6
6
  module Nodes
7
+ # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#infoObject
7
8
  class Info
8
9
  include Node::Object
9
10
 
11
+ # @return [String]
10
12
  def title
11
13
  node_data["title"]
12
14
  end
13
15
 
16
+ # @return [String, null]
14
17
  def description
15
18
  node_data["description"]
16
19
  end
17
20
 
21
+ # @return [String, null]
18
22
  def terms_of_service
19
23
  node_data["termsOfService"]
20
24
  end
21
25
 
26
+ # @return [Contact, nil]
22
27
  def contact
23
28
  node_data["contact"]
24
29
  end
25
30
 
31
+ # @return [License, nil]
26
32
  def license
27
33
  node_data["license"]
28
34
  end
29
35
 
36
+ # @return [String]
30
37
  def version
31
38
  node_data["version"]
32
39
  end
@@ -4,13 +4,16 @@ require "openapi3_parser/node/object"
4
4
 
5
5
  module Openapi3Parser
6
6
  module Nodes
7
+ # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#licenseObject
7
8
  class License
8
9
  include Node::Object
9
10
 
11
+ # @return [String]
10
12
  def name
11
13
  node_data["name"]
12
14
  end
13
15
 
16
+ # @return [String, nil]
14
17
  def url
15
18
  node_data["url"]
16
19
  end
@@ -4,29 +4,36 @@ require "openapi3_parser/node/object"
4
4
 
5
5
  module Openapi3Parser
6
6
  module Nodes
7
+ # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#linkObject
7
8
  class Link
8
9
  include Node::Object
9
10
 
11
+ # @return [String, nil]
10
12
  def operation_ref
11
13
  node_data["operationRef"]
12
14
  end
13
15
 
16
+ # @return [String, nil]
14
17
  def operation_id
15
18
  node_data["operationId"]
16
19
  end
17
20
 
21
+ # @return [Map] a map of String: {Parameter}[./Parameter.html] objects
18
22
  def parameters
19
23
  node_data["parameters"]
20
24
  end
21
25
 
26
+ # @return [Any]
22
27
  def request_body
23
28
  node_data["requestBody"]
24
29
  end
25
30
 
31
+ # @return [String, nil]
26
32
  def description
27
33
  node_data["description"]
28
34
  end
29
35
 
36
+ # @return [Server, nil]
30
37
  def server
31
38
  node_data["server"]
32
39
  end
@@ -4,6 +4,12 @@ require "openapi3_parser/node/map"
4
4
 
5
5
  module Openapi3Parser
6
6
  module Nodes
7
+ # A map within a OpenAPI document.
8
+ # Very similar to a ruby hash, however this is read only and knows
9
+ # the context of where it sits in an OpenAPI document
10
+ #
11
+ # The contents of the data will be dependent on where this document is in
12
+ # the document hierachy.
7
13
  class Map
8
14
  include Node::Map
9
15
  end
@@ -4,21 +4,26 @@ require "openapi3_parser/node/object"
4
4
 
5
5
  module Openapi3Parser
6
6
  module Nodes
7
+ # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#mediaTypeObject
7
8
  class MediaType
8
9
  include Node::Object
9
10
 
11
+ # @return [Schema, nil]
10
12
  def schema
11
13
  node_data["schema"]
12
14
  end
13
15
 
16
+ # @return [Any]
14
17
  def example
15
18
  node_data["example"]
16
19
  end
17
20
 
21
+ # @return [Map] a map of String: {Example}[./Example.html] objects
18
22
  def examples
19
23
  node_data["examples"]
20
24
  end
21
25
 
26
+ # @return [Map] a map of String: {Encoding}[./Encoding.html] objects
22
27
  def encoding
23
28
  node_data["encoding"]
24
29
  end
@@ -4,21 +4,26 @@ require "openapi3_parser/node/object"
4
4
 
5
5
  module Openapi3Parser
6
6
  module Nodes
7
+ # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#oauthFlowObject
7
8
  class OauthFlow
8
9
  include Node::Object
9
10
 
11
+ # @return [String, nil]
10
12
  def authorization_url
11
13
  node_data["authorizationUrl"]
12
14
  end
13
15
 
16
+ # @return [String, nil]
14
17
  def token_url
15
18
  node_data["tokenUrl"]
16
19
  end
17
20
 
21
+ # @return [String, nil]
18
22
  def refresh_url
19
23
  node_data["refreshUrl"]
20
24
  end
21
25
 
26
+ # @return [Map] a map of String: String objects
22
27
  def scopes
23
28
  node_data["scopes"]
24
29
  end
@@ -4,21 +4,26 @@ require "openapi3_parser/node/object"
4
4
 
5
5
  module Openapi3Parser
6
6
  module Nodes
7
+ # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#oauthFlowsObject
7
8
  class OauthFlows
8
9
  include Node::Object
9
10
 
11
+ # @return [OauthFlow, nil]
10
12
  def implicit
11
13
  node_data["implicit"]
12
14
  end
13
15
 
16
+ # @return [OauthFlow, nil]
14
17
  def password
15
18
  node_data["password"]
16
19
  end
17
20
 
21
+ # @return [OauthFlow, nil]
18
22
  def client_credentials
19
23
  node_data["clientCredentials"]
20
24
  end
21
25
 
26
+ # @return [OauthFlow, nil]
22
27
  def authorization_code
23
28
  node_data["authorizationCode"]
24
29
  end
@@ -5,37 +5,48 @@ require "openapi3_parser/nodes/components"
5
5
 
6
6
  module Openapi3Parser
7
7
  module Nodes
8
+ # OpenAPI Root Object
9
+ # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#oasObject
8
10
  class Openapi
9
11
  include Node::Object
10
12
 
13
+ # @return [String]
11
14
  def openapi
12
15
  node_data["openapi"]
13
16
  end
14
17
 
18
+ # @return [Info]
15
19
  def info
16
20
  node_data["info"]
17
21
  end
18
22
 
23
+ # @return [Nodes::Array] A collection of {Server}[./Server.html] objects
19
24
  def servers
20
25
  node_data["servers"]
21
26
  end
22
27
 
28
+ # @return [Paths]
23
29
  def paths
24
30
  node_data["paths"]
25
31
  end
26
32
 
33
+ # @return [Components]
27
34
  def components
28
35
  node_data["components"]
29
36
  end
30
37
 
38
+ # @return [Nodes::Array] a collection of
39
+ # {SecurityRequirement}[./SecurityRequirement.html] objects
31
40
  def security
32
41
  node_data["security"]
33
42
  end
34
43
 
44
+ # @return [Nodes::Array] A collection of {Tag}[./Tag.html] objects
35
45
  def tags
36
46
  node_data["tags"]
37
47
  end
38
48
 
49
+ # @return [ExternalDocumentation]
39
50
  def external_docs
40
51
  node_data["externalDocs"]
41
52
  end
@@ -4,53 +4,69 @@ require "openapi3_parser/node/object"
4
4
 
5
5
  module Openapi3Parser
6
6
  module Nodes
7
+ # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#operationObject
7
8
  class Operation
8
9
  include Node::Object
9
10
 
11
+ # @return [Nodes::Array] a collection of String objects
10
12
  def tags
11
13
  node_data["tags"]
12
14
  end
13
15
 
16
+ # @return [String, nil]
14
17
  def summary
15
18
  node_data["summary"]
16
19
  end
17
20
 
21
+ # @return [String, nil]
18
22
  def description
19
23
  node_data["description"]
20
24
  end
21
25
 
26
+ # @return [ExternalDocumentation, nil]
22
27
  def external_docs
23
28
  node_data["externalDocs"]
24
29
  end
25
30
 
31
+ # @return [String, nil]
26
32
  def operation_id
27
33
  node_data["operationId"]
28
34
  end
29
35
 
36
+ # @return [Nodes::Array] a collection of {Parameter}[./Parameter.html]
37
+ # objects
30
38
  def parameters
31
39
  node_data["parameters"]
32
40
  end
33
41
 
42
+ # @return [RequestBody, nil]
34
43
  def request_body
35
44
  node_data["requestBody"]
36
45
  end
37
46
 
47
+ # @return [Responses]
38
48
  def responses
39
49
  node_data["responses"]
40
50
  end
41
51
 
52
+ # @return [Map] a collection of String: {Callback}[./Callback.html]
53
+ # objects
42
54
  def callbacks
43
55
  node_data["callbacks"]
44
56
  end
45
57
 
58
+ # @return [Boolean]
46
59
  def deprecated?
47
60
  node_data["deprecated"]
48
61
  end
49
62
 
63
+ # @return [Nodes::Array] a collection of
64
+ # {SecurityRequirement}[./SecurityRequirement.html] objects
50
65
  def security
51
66
  node_data["security"]
52
67
  end
53
68
 
69
+ # @return [Nodes::Array] a collection of {Server}[./Server.html] objects
54
70
  def servers
55
71
  node_data["servers"]
56
72
  end
@@ -5,14 +5,17 @@ require "openapi3_parser/nodes/parameter/parameter_like"
5
5
 
6
6
  module Openapi3Parser
7
7
  module Nodes
8
+ # @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#parameterObject
8
9
  class Parameter
9
10
  include Node::Object
10
11
  include ParameterLike
11
12
 
13
+ # @return [String]
12
14
  def name
13
15
  node_data["name"]
14
16
  end
15
17
 
18
+ # @return [String]
16
19
  def in
17
20
  node_data["in"]
18
21
  end
@@ -3,47 +3,61 @@
3
3
  module Openapi3Parser
4
4
  module Nodes
5
5
  class Parameter
6
+ # This contains methods that are shared between nodes that act like a
7
+ # Parameter, at the time of writing this was {Header}[../Header.html]
8
+ # and {Parameter}[../Paramater.html]
6
9
  module ParameterLike
10
+ # @return [String]
7
11
  def description
8
12
  node_data["description"]
9
13
  end
10
14
 
15
+ # @return [Boolean]
11
16
  def required?
12
17
  node_data["required"]
13
18
  end
14
19
 
20
+ # @return [Boolean]
15
21
  def deprecated?
16
22
  node_data["deprecated"]
17
23
  end
18
24
 
25
+ # @return [Boolean]
19
26
  def allow_empty_value?
20
27
  node_data["allowEmptyValue"]
21
28
  end
22
29
 
30
+ # @return [String, nil]
23
31
  def style
24
32
  node_data["style"]
25
33
  end
26
34
 
35
+ # @return [Boolean]
27
36
  def explode?
28
37
  node_data["explode"]
29
38
  end
30
39
 
40
+ # @return [Boolean]
31
41
  def allow_reserved?
32
42
  node_data["allowReserved"]
33
43
  end
34
44
 
45
+ # @return [Schema, nil]
35
46
  def schema
36
47
  node_data["schema"]
37
48
  end
38
49
 
50
+ # @return [Any]
39
51
  def example
40
52
  node_data["example"]
41
53
  end
42
54
 
55
+ # @return [Map] a map of String: {Example}[../Example.html] objects
43
56
  def examples
44
57
  node_data["examples"]
45
58
  end
46
59
 
60
+ # @return [Map] a map of String: {MediaType}[../MediaType.html] objects
47
61
  def content
48
62
  node_data["content"]
49
63
  end