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.
Files changed (96) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/.rspec +1 -0
  4. data/.rubocop.yml +9 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +4 -0
  7. data/Gemfile +5 -0
  8. data/LICENCE +19 -0
  9. data/README.md +32 -0
  10. data/Rakefile +10 -0
  11. data/TODO.md +30 -0
  12. data/lib/openapi3_parser.rb +39 -0
  13. data/lib/openapi3_parser/context.rb +54 -0
  14. data/lib/openapi3_parser/document.rb +48 -0
  15. data/lib/openapi3_parser/error.rb +5 -0
  16. data/lib/openapi3_parser/fields/map.rb +83 -0
  17. data/lib/openapi3_parser/node.rb +115 -0
  18. data/lib/openapi3_parser/node/map.rb +24 -0
  19. data/lib/openapi3_parser/node/object.rb +28 -0
  20. data/lib/openapi3_parser/node_factories/array.rb +105 -0
  21. data/lib/openapi3_parser/node_factories/callback.rb +26 -0
  22. data/lib/openapi3_parser/node_factories/components.rb +83 -0
  23. data/lib/openapi3_parser/node_factories/contact.rb +24 -0
  24. data/lib/openapi3_parser/node_factories/discriminator.rb +31 -0
  25. data/lib/openapi3_parser/node_factories/encoding.rb +34 -0
  26. data/lib/openapi3_parser/node_factories/example.rb +25 -0
  27. data/lib/openapi3_parser/node_factories/external_documentation.rb +23 -0
  28. data/lib/openapi3_parser/node_factories/header.rb +36 -0
  29. data/lib/openapi3_parser/node_factories/info.rb +28 -0
  30. data/lib/openapi3_parser/node_factories/license.rb +22 -0
  31. data/lib/openapi3_parser/node_factories/link.rb +40 -0
  32. data/lib/openapi3_parser/node_factories/map.rb +110 -0
  33. data/lib/openapi3_parser/node_factories/media_type.rb +44 -0
  34. data/lib/openapi3_parser/node_factories/oauth_flow.rb +24 -0
  35. data/lib/openapi3_parser/node_factories/oauth_flows.rb +31 -0
  36. data/lib/openapi3_parser/node_factories/openapi.rb +50 -0
  37. data/lib/openapi3_parser/node_factories/operation.rb +76 -0
  38. data/lib/openapi3_parser/node_factories/parameter.rb +43 -0
  39. data/lib/openapi3_parser/node_factories/parameter/parameter_like.rb +37 -0
  40. data/lib/openapi3_parser/node_factories/path_item.rb +75 -0
  41. data/lib/openapi3_parser/node_factories/paths.rb +32 -0
  42. data/lib/openapi3_parser/node_factories/reference.rb +33 -0
  43. data/lib/openapi3_parser/node_factories/request_body.rb +31 -0
  44. data/lib/openapi3_parser/node_factories/response.rb +45 -0
  45. data/lib/openapi3_parser/node_factories/responses.rb +32 -0
  46. data/lib/openapi3_parser/node_factories/schema.rb +106 -0
  47. data/lib/openapi3_parser/node_factories/security_requirement.rb +25 -0
  48. data/lib/openapi3_parser/node_factories/security_scheme.rb +35 -0
  49. data/lib/openapi3_parser/node_factories/server.rb +32 -0
  50. data/lib/openapi3_parser/node_factories/server_variable.rb +28 -0
  51. data/lib/openapi3_parser/node_factories/tag.rb +24 -0
  52. data/lib/openapi3_parser/node_factories/xml.rb +25 -0
  53. data/lib/openapi3_parser/node_factory.rb +126 -0
  54. data/lib/openapi3_parser/node_factory/field_config.rb +88 -0
  55. data/lib/openapi3_parser/node_factory/map.rb +39 -0
  56. data/lib/openapi3_parser/node_factory/object.rb +80 -0
  57. data/lib/openapi3_parser/node_factory/object/node_builder.rb +85 -0
  58. data/lib/openapi3_parser/node_factory/object/validator.rb +102 -0
  59. data/lib/openapi3_parser/node_factory/optional_reference.rb +23 -0
  60. data/lib/openapi3_parser/nodes/array.rb +26 -0
  61. data/lib/openapi3_parser/nodes/callback.rb +11 -0
  62. data/lib/openapi3_parser/nodes/components.rb +47 -0
  63. data/lib/openapi3_parser/nodes/contact.rb +23 -0
  64. data/lib/openapi3_parser/nodes/discriminator.rb +19 -0
  65. data/lib/openapi3_parser/nodes/encoding.rb +31 -0
  66. data/lib/openapi3_parser/nodes/example.rb +27 -0
  67. data/lib/openapi3_parser/nodes/external_documentation.rb +19 -0
  68. data/lib/openapi3_parser/nodes/header.rb +13 -0
  69. data/lib/openapi3_parser/nodes/info.rb +35 -0
  70. data/lib/openapi3_parser/nodes/license.rb +19 -0
  71. data/lib/openapi3_parser/nodes/link.rb +35 -0
  72. data/lib/openapi3_parser/nodes/map.rb +11 -0
  73. data/lib/openapi3_parser/nodes/media_type.rb +27 -0
  74. data/lib/openapi3_parser/nodes/oauth_flow.rb +27 -0
  75. data/lib/openapi3_parser/nodes/oauth_flows.rb +27 -0
  76. data/lib/openapi3_parser/nodes/openapi.rb +44 -0
  77. data/lib/openapi3_parser/nodes/operation.rb +59 -0
  78. data/lib/openapi3_parser/nodes/parameter.rb +21 -0
  79. data/lib/openapi3_parser/nodes/parameter/parameter_like.rb +53 -0
  80. data/lib/openapi3_parser/nodes/path_item.rb +59 -0
  81. data/lib/openapi3_parser/nodes/paths.rb +11 -0
  82. data/lib/openapi3_parser/nodes/request_body.rb +23 -0
  83. data/lib/openapi3_parser/nodes/response.rb +27 -0
  84. data/lib/openapi3_parser/nodes/responses.rb +15 -0
  85. data/lib/openapi3_parser/nodes/schema.rb +159 -0
  86. data/lib/openapi3_parser/nodes/security_requirement.rb +11 -0
  87. data/lib/openapi3_parser/nodes/security_scheme.rb +44 -0
  88. data/lib/openapi3_parser/nodes/server.rb +25 -0
  89. data/lib/openapi3_parser/nodes/server_variable.rb +23 -0
  90. data/lib/openapi3_parser/nodes/tag.rb +23 -0
  91. data/lib/openapi3_parser/nodes/xml.rb +31 -0
  92. data/lib/openapi3_parser/validation/error.rb +14 -0
  93. data/lib/openapi3_parser/validation/error_collection.rb +36 -0
  94. data/lib/openapi3_parser/version.rb +5 -0
  95. data/openapi3_parser.gemspec +28 -0
  96. metadata +208 -0
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "openapi3_parser/node/object"
4
+
5
+ module Openapi3Parser
6
+ module Nodes
7
+ class License
8
+ include Node::Object
9
+
10
+ def name
11
+ node_data["name"]
12
+ end
13
+
14
+ def url
15
+ node_data["url"]
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "openapi3_parser/node/object"
4
+
5
+ module Openapi3Parser
6
+ module Nodes
7
+ class Link
8
+ include Node::Object
9
+
10
+ def operation_ref
11
+ node_data["operationRef"]
12
+ end
13
+
14
+ def operation_id
15
+ node_data["operationId"]
16
+ end
17
+
18
+ def parameters
19
+ node_data["parameters"]
20
+ end
21
+
22
+ def request_body
23
+ node_data["requestBody"]
24
+ end
25
+
26
+ def description
27
+ node_data["description"]
28
+ end
29
+
30
+ def server
31
+ node_data["server"]
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "openapi3_parser/node/map"
4
+
5
+ module Openapi3Parser
6
+ module Nodes
7
+ class Map
8
+ include Node::Map
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "openapi3_parser/node/object"
4
+
5
+ module Openapi3Parser
6
+ module Nodes
7
+ class MediaType
8
+ include Node::Object
9
+
10
+ def schema
11
+ node_data["schema"]
12
+ end
13
+
14
+ def example
15
+ node_data["example"]
16
+ end
17
+
18
+ def examples
19
+ node_data["examples"]
20
+ end
21
+
22
+ def encoding
23
+ node_data["encoding"]
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "openapi3_parser/node/object"
4
+
5
+ module Openapi3Parser
6
+ module Nodes
7
+ class OauthFlow
8
+ include Node::Object
9
+
10
+ def authorization_url
11
+ node_data["authorizationUrl"]
12
+ end
13
+
14
+ def token_url
15
+ node_data["tokenUrl"]
16
+ end
17
+
18
+ def refresh_url
19
+ node_data["refreshUrl"]
20
+ end
21
+
22
+ def scopes
23
+ node_data["scopes"]
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "openapi3_parser/node/object"
4
+
5
+ module Openapi3Parser
6
+ module Nodes
7
+ class OauthFlows
8
+ include Node::Object
9
+
10
+ def implicit
11
+ node_data["implicit"]
12
+ end
13
+
14
+ def password
15
+ node_data["password"]
16
+ end
17
+
18
+ def client_credentials
19
+ node_data["clientCredentials"]
20
+ end
21
+
22
+ def authorization_code
23
+ node_data["authorizationCode"]
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "openapi3_parser/node/object"
4
+ require "openapi3_parser/nodes/components"
5
+
6
+ module Openapi3Parser
7
+ module Nodes
8
+ class Openapi
9
+ include Node::Object
10
+
11
+ def openapi
12
+ node_data["openapi"]
13
+ end
14
+
15
+ def info
16
+ node_data["info"]
17
+ end
18
+
19
+ def servers
20
+ node_data["servers"]
21
+ end
22
+
23
+ def paths
24
+ node_data["paths"]
25
+ end
26
+
27
+ def components
28
+ node_data["components"]
29
+ end
30
+
31
+ def security
32
+ node_data["security"]
33
+ end
34
+
35
+ def tags
36
+ node_data["tags"]
37
+ end
38
+
39
+ def external_docs
40
+ node_data["externalDocs"]
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "openapi3_parser/node/object"
4
+
5
+ module Openapi3Parser
6
+ module Nodes
7
+ class Operation
8
+ include Node::Object
9
+
10
+ def tags
11
+ node_data["tags"]
12
+ end
13
+
14
+ def summary
15
+ node_data["summary"]
16
+ end
17
+
18
+ def description
19
+ node_data["description"]
20
+ end
21
+
22
+ def external_docs
23
+ node_data["externalDocs"]
24
+ end
25
+
26
+ def operation_id
27
+ node_data["operationId"]
28
+ end
29
+
30
+ def parameters
31
+ node_data["parameters"]
32
+ end
33
+
34
+ def request_body
35
+ node_data["requestBody"]
36
+ end
37
+
38
+ def responses
39
+ node_data["responses"]
40
+ end
41
+
42
+ def callbacks
43
+ node_data["callbacks"]
44
+ end
45
+
46
+ def deprecated?
47
+ node_data["deprecated"]
48
+ end
49
+
50
+ def security
51
+ node_data["security"]
52
+ end
53
+
54
+ def servers
55
+ node_data["servers"]
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "openapi3_parser/node/object"
4
+ require "openapi3_parser/nodes/parameter/parameter_like"
5
+
6
+ module Openapi3Parser
7
+ module Nodes
8
+ class Parameter
9
+ include Node::Object
10
+ include ParameterLike
11
+
12
+ def name
13
+ node_data["name"]
14
+ end
15
+
16
+ def in
17
+ node_data["in"]
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Openapi3Parser
4
+ module Nodes
5
+ class Parameter
6
+ module ParameterLike
7
+ def description
8
+ node_data["description"]
9
+ end
10
+
11
+ def required?
12
+ node_data["required"]
13
+ end
14
+
15
+ def deprecated?
16
+ node_data["deprecated"]
17
+ end
18
+
19
+ def allow_empty_value?
20
+ node_data["allowEmptyValue"]
21
+ end
22
+
23
+ def style
24
+ node_data["style"]
25
+ end
26
+
27
+ def explode?
28
+ node_data["explode"]
29
+ end
30
+
31
+ def allow_reserved?
32
+ node_data["allowReserved"]
33
+ end
34
+
35
+ def schema
36
+ node_data["schema"]
37
+ end
38
+
39
+ def example
40
+ node_data["example"]
41
+ end
42
+
43
+ def examples
44
+ node_data["examples"]
45
+ end
46
+
47
+ def content
48
+ node_data["content"]
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "openapi3_parser/node/object"
4
+
5
+ module Openapi3Parser
6
+ module Nodes
7
+ class PathItem
8
+ include Node::Object
9
+
10
+ def summary
11
+ node_data["summary"]
12
+ end
13
+
14
+ def description
15
+ node_data["description"]
16
+ end
17
+
18
+ def get
19
+ node_data["get"]
20
+ end
21
+
22
+ def put
23
+ node_data["put"]
24
+ end
25
+
26
+ def post
27
+ node_data["post"]
28
+ end
29
+
30
+ def delete
31
+ node_data["delete"]
32
+ end
33
+
34
+ def options
35
+ node_data["options"]
36
+ end
37
+
38
+ def head
39
+ node_data["head"]
40
+ end
41
+
42
+ def patch
43
+ node_data["patch"]
44
+ end
45
+
46
+ def trace
47
+ node_data["trace"]
48
+ end
49
+
50
+ def servers
51
+ node_data["servers"]
52
+ end
53
+
54
+ def parameters
55
+ node_data["parameters"]
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "openapi3_parser/node/map"
4
+
5
+ module Openapi3Parser
6
+ module Nodes
7
+ class Paths
8
+ include Node::Map
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "openapi3_parser/node/object"
4
+
5
+ module Openapi3Parser
6
+ module Nodes
7
+ class RequestBody
8
+ include Node::Object
9
+
10
+ def description
11
+ node_data["description"]
12
+ end
13
+
14
+ def content
15
+ node_data["content"]
16
+ end
17
+
18
+ def required?
19
+ node_data["required"]
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "openapi3_parser/node/object"
4
+
5
+ module Openapi3Parser
6
+ module Nodes
7
+ class Response
8
+ include Node::Object
9
+
10
+ def description
11
+ node_data["description"]
12
+ end
13
+
14
+ def headers
15
+ node_data["headers"]
16
+ end
17
+
18
+ def content
19
+ node_data["content"]
20
+ end
21
+
22
+ def links
23
+ node_data["links"]
24
+ end
25
+ end
26
+ end
27
+ end