jsapi 0.8.0 → 0.9.1

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 (107) hide show
  1. checksums.yaml +4 -4
  2. data/lib/jsapi/configuration.rb +28 -0
  3. data/lib/jsapi/controller/methods.rb +1 -1
  4. data/lib/jsapi/dsl/base.rb +92 -0
  5. data/lib/jsapi/dsl/callback.rb +21 -0
  6. data/lib/jsapi/dsl/class_methods.rb +143 -16
  7. data/lib/jsapi/dsl/definitions.rb +173 -33
  8. data/lib/jsapi/dsl/examples.rb +30 -0
  9. data/lib/jsapi/dsl/operation.rb +60 -32
  10. data/lib/jsapi/dsl/parameter.rb +2 -2
  11. data/lib/jsapi/dsl/request_body.rb +2 -2
  12. data/lib/jsapi/dsl/response.rb +35 -11
  13. data/lib/jsapi/dsl/schema.rb +16 -16
  14. data/lib/jsapi/dsl.rb +4 -4
  15. data/lib/jsapi/meta/base/attributes.rb +21 -19
  16. data/lib/jsapi/meta/base/model.rb +15 -7
  17. data/lib/jsapi/meta/callback/model.rb +34 -0
  18. data/lib/jsapi/meta/callback/reference.rb +14 -0
  19. data/lib/jsapi/meta/callback.rb +19 -0
  20. data/lib/jsapi/meta/contact.rb +30 -0
  21. data/lib/jsapi/meta/defaults.rb +2 -2
  22. data/lib/jsapi/meta/definitions.rb +230 -124
  23. data/lib/jsapi/meta/example/model.rb +43 -0
  24. data/lib/jsapi/meta/example/reference.rb +14 -0
  25. data/lib/jsapi/meta/example.rb +19 -0
  26. data/lib/jsapi/meta/external_documentation.rb +25 -0
  27. data/lib/jsapi/meta/header/model.rb +81 -0
  28. data/lib/jsapi/meta/header/reference.rb +14 -0
  29. data/lib/jsapi/meta/header.rb +19 -0
  30. data/lib/jsapi/meta/info.rb +52 -0
  31. data/lib/jsapi/meta/license.rb +25 -0
  32. data/lib/jsapi/meta/link/model.rb +48 -0
  33. data/lib/jsapi/meta/link/reference.rb +14 -0
  34. data/lib/jsapi/meta/link.rb +19 -0
  35. data/lib/jsapi/meta/oauth_flow.rb +52 -0
  36. data/lib/jsapi/meta/openapi.rb +0 -28
  37. data/lib/jsapi/meta/operation.rb +19 -18
  38. data/lib/jsapi/meta/parameter/model.rb +6 -4
  39. data/lib/jsapi/meta/parameter/reference.rb +6 -4
  40. data/lib/jsapi/meta/parameter/to_openapi.rb +13 -0
  41. data/lib/jsapi/meta/parameter.rb +2 -1
  42. data/lib/jsapi/meta/property.rb +1 -1
  43. data/lib/jsapi/meta/request_body/model.rb +6 -5
  44. data/lib/jsapi/meta/request_body.rb +1 -1
  45. data/lib/jsapi/meta/response/model.rb +16 -13
  46. data/lib/jsapi/meta/response.rb +1 -1
  47. data/lib/jsapi/meta/schema/array.rb +1 -1
  48. data/lib/jsapi/meta/schema/base.rb +5 -5
  49. data/lib/jsapi/meta/schema/discriminator.rb +2 -2
  50. data/lib/jsapi/meta/schema/object.rb +3 -3
  51. data/lib/jsapi/meta/schema/reference.rb +1 -1
  52. data/lib/jsapi/meta/schema.rb +2 -2
  53. data/lib/jsapi/meta/security_requirement.rb +25 -0
  54. data/lib/jsapi/meta/security_scheme/api_key.rb +38 -0
  55. data/lib/jsapi/meta/security_scheme/base.rb +14 -0
  56. data/lib/jsapi/meta/security_scheme/http/basic.rb +34 -0
  57. data/lib/jsapi/meta/security_scheme/http/bearer.rb +36 -0
  58. data/lib/jsapi/meta/security_scheme/http/other.rb +36 -0
  59. data/lib/jsapi/meta/security_scheme/http.rb +29 -0
  60. data/lib/jsapi/meta/security_scheme/oauth2.rb +44 -0
  61. data/lib/jsapi/meta/security_scheme/open_id_connect.rb +32 -0
  62. data/lib/jsapi/meta/security_scheme.rb +49 -0
  63. data/lib/jsapi/meta/server.rb +34 -0
  64. data/lib/jsapi/meta/server_variable.rb +34 -0
  65. data/lib/jsapi/meta/tag.rb +34 -0
  66. data/lib/jsapi/meta.rb +15 -1
  67. data/lib/jsapi/model/base.rb +5 -5
  68. data/lib/jsapi/version.rb +1 -1
  69. data/lib/jsapi.rb +1 -1
  70. metadata +39 -42
  71. data/lib/jsapi/dsl/node.rb +0 -62
  72. data/lib/jsapi/dsl/openapi/callback.rb +0 -23
  73. data/lib/jsapi/dsl/openapi/callbacks.rb +0 -34
  74. data/lib/jsapi/dsl/openapi/examples.rb +0 -32
  75. data/lib/jsapi/dsl/openapi/root.rb +0 -126
  76. data/lib/jsapi/dsl/openapi.rb +0 -6
  77. data/lib/jsapi/meta/openapi/callback/model.rb +0 -34
  78. data/lib/jsapi/meta/openapi/callback/reference.rb +0 -16
  79. data/lib/jsapi/meta/openapi/callback.rb +0 -21
  80. data/lib/jsapi/meta/openapi/contact.rb +0 -32
  81. data/lib/jsapi/meta/openapi/example/model.rb +0 -44
  82. data/lib/jsapi/meta/openapi/example/reference.rb +0 -16
  83. data/lib/jsapi/meta/openapi/example.rb +0 -21
  84. data/lib/jsapi/meta/openapi/external_documentation.rb +0 -27
  85. data/lib/jsapi/meta/openapi/header/model.rb +0 -82
  86. data/lib/jsapi/meta/openapi/header/reference.rb +0 -16
  87. data/lib/jsapi/meta/openapi/header.rb +0 -21
  88. data/lib/jsapi/meta/openapi/info.rb +0 -54
  89. data/lib/jsapi/meta/openapi/license.rb +0 -27
  90. data/lib/jsapi/meta/openapi/link/model.rb +0 -50
  91. data/lib/jsapi/meta/openapi/link/reference.rb +0 -16
  92. data/lib/jsapi/meta/openapi/link.rb +0 -21
  93. data/lib/jsapi/meta/openapi/oauth_flow.rb +0 -52
  94. data/lib/jsapi/meta/openapi/root.rb +0 -132
  95. data/lib/jsapi/meta/openapi/security_requirement.rb +0 -27
  96. data/lib/jsapi/meta/openapi/security_scheme/api_key.rb +0 -40
  97. data/lib/jsapi/meta/openapi/security_scheme/base.rb +0 -16
  98. data/lib/jsapi/meta/openapi/security_scheme/http/basic.rb +0 -36
  99. data/lib/jsapi/meta/openapi/security_scheme/http/bearer.rb +0 -39
  100. data/lib/jsapi/meta/openapi/security_scheme/http/other.rb +0 -39
  101. data/lib/jsapi/meta/openapi/security_scheme/http.rb +0 -31
  102. data/lib/jsapi/meta/openapi/security_scheme/oauth2.rb +0 -46
  103. data/lib/jsapi/meta/openapi/security_scheme/open_id_connect.rb +0 -34
  104. data/lib/jsapi/meta/openapi/security_scheme.rb +0 -51
  105. data/lib/jsapi/meta/openapi/server.rb +0 -36
  106. data/lib/jsapi/meta/openapi/server_variable.rb +0 -36
  107. data/lib/jsapi/meta/openapi/tag.rb +0 -36
@@ -50,11 +50,6 @@ module Jsapi
50
50
  "#{attributes.map { |k, v| "#{k}: #{v.inspect}" }.join(', ')}>"
51
51
  end
52
52
 
53
- def method_missing(*args) # :nodoc:
54
- name = args.first.to_s
55
- _attr_readers.key?(name) ? _attr_readers[name] : super
56
- end
57
-
58
53
  def respond_to_missing?(param1, _param2) # :nodoc:
59
54
  _attr_readers.key?(param1.to_s) ? true : super
60
55
  end
@@ -68,6 +63,11 @@ module Jsapi
68
63
  def _nested_validity
69
64
  @nested.validate(errors)
70
65
  end
66
+
67
+ def method_missing(*args) # :nodoc:
68
+ name = args.first.to_s
69
+ _attr_readers.key?(name) ? _attr_readers[name] : super
70
+ end
71
71
  end
72
72
  end
73
73
  end
data/lib/jsapi/version.rb CHANGED
@@ -5,6 +5,6 @@ module Jsapi
5
5
  # NOTE: See https://bundler.io/guides/creating_gem.html
6
6
 
7
7
  # The current GEM version.
8
- VERSION = '0.8.0'
8
+ VERSION = '0.9.1'
9
9
  end
10
10
  end
data/lib/jsapi.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  require 'jsapi/invalid_value_helper'
4
4
  require 'jsapi/invalid_value_error'
5
5
  require 'jsapi/invalid_argument_error'
6
-
6
+ require 'jsapi/configuration'
7
7
  require 'jsapi/model'
8
8
  require 'jsapi/meta'
9
9
  require 'jsapi/dsl'
metadata CHANGED
@@ -1,23 +1,23 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Denis Göller
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-09-29 00:00:00.000000000 Z
11
+ date: 2024-10-18 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: Jsapi can be used to read requests, produce responses and create OpenAPI
14
- documents
13
+ description:
15
14
  email: denis@dmgoeller.de
16
15
  executables: []
17
16
  extensions: []
18
17
  extra_rdoc_files: []
19
18
  files:
20
19
  - lib/jsapi.rb
20
+ - lib/jsapi/configuration.rb
21
21
  - lib/jsapi/controller.rb
22
22
  - lib/jsapi/controller/base.rb
23
23
  - lib/jsapi/controller/error.rb
@@ -26,15 +26,12 @@ files:
26
26
  - lib/jsapi/controller/parameters_invalid.rb
27
27
  - lib/jsapi/controller/response.rb
28
28
  - lib/jsapi/dsl.rb
29
+ - lib/jsapi/dsl/base.rb
30
+ - lib/jsapi/dsl/callback.rb
29
31
  - lib/jsapi/dsl/class_methods.rb
30
32
  - lib/jsapi/dsl/definitions.rb
31
33
  - lib/jsapi/dsl/error.rb
32
- - lib/jsapi/dsl/node.rb
33
- - lib/jsapi/dsl/openapi.rb
34
- - lib/jsapi/dsl/openapi/callback.rb
35
- - lib/jsapi/dsl/openapi/callbacks.rb
36
- - lib/jsapi/dsl/openapi/examples.rb
37
- - lib/jsapi/dsl/openapi/root.rb
34
+ - lib/jsapi/dsl/examples.rb
38
35
  - lib/jsapi/dsl/operation.rb
39
36
  - lib/jsapi/dsl/parameter.rb
40
37
  - lib/jsapi/dsl/request_body.rb
@@ -61,47 +58,34 @@ files:
61
58
  - lib/jsapi/meta/callable.rb
62
59
  - lib/jsapi/meta/callable/symbol_evaluator.rb
63
60
  - lib/jsapi/meta/callable/symbol_sequence_evaluator.rb
61
+ - lib/jsapi/meta/callback.rb
62
+ - lib/jsapi/meta/callback/model.rb
63
+ - lib/jsapi/meta/callback/reference.rb
64
+ - lib/jsapi/meta/contact.rb
64
65
  - lib/jsapi/meta/defaults.rb
65
66
  - lib/jsapi/meta/definitions.rb
67
+ - lib/jsapi/meta/example.rb
68
+ - lib/jsapi/meta/example/model.rb
69
+ - lib/jsapi/meta/example/reference.rb
66
70
  - lib/jsapi/meta/existence.rb
71
+ - lib/jsapi/meta/external_documentation.rb
72
+ - lib/jsapi/meta/header.rb
73
+ - lib/jsapi/meta/header/model.rb
74
+ - lib/jsapi/meta/header/reference.rb
75
+ - lib/jsapi/meta/info.rb
76
+ - lib/jsapi/meta/license.rb
77
+ - lib/jsapi/meta/link.rb
78
+ - lib/jsapi/meta/link/model.rb
79
+ - lib/jsapi/meta/link/reference.rb
80
+ - lib/jsapi/meta/oauth_flow.rb
67
81
  - lib/jsapi/meta/openapi.rb
68
- - lib/jsapi/meta/openapi/callback.rb
69
- - lib/jsapi/meta/openapi/callback/model.rb
70
- - lib/jsapi/meta/openapi/callback/reference.rb
71
- - lib/jsapi/meta/openapi/contact.rb
72
- - lib/jsapi/meta/openapi/example.rb
73
- - lib/jsapi/meta/openapi/example/model.rb
74
- - lib/jsapi/meta/openapi/example/reference.rb
75
82
  - lib/jsapi/meta/openapi/extensions.rb
76
- - lib/jsapi/meta/openapi/external_documentation.rb
77
- - lib/jsapi/meta/openapi/header.rb
78
- - lib/jsapi/meta/openapi/header/model.rb
79
- - lib/jsapi/meta/openapi/header/reference.rb
80
- - lib/jsapi/meta/openapi/info.rb
81
- - lib/jsapi/meta/openapi/license.rb
82
- - lib/jsapi/meta/openapi/link.rb
83
- - lib/jsapi/meta/openapi/link/model.rb
84
- - lib/jsapi/meta/openapi/link/reference.rb
85
- - lib/jsapi/meta/openapi/oauth_flow.rb
86
- - lib/jsapi/meta/openapi/root.rb
87
- - lib/jsapi/meta/openapi/security_requirement.rb
88
- - lib/jsapi/meta/openapi/security_scheme.rb
89
- - lib/jsapi/meta/openapi/security_scheme/api_key.rb
90
- - lib/jsapi/meta/openapi/security_scheme/base.rb
91
- - lib/jsapi/meta/openapi/security_scheme/http.rb
92
- - lib/jsapi/meta/openapi/security_scheme/http/basic.rb
93
- - lib/jsapi/meta/openapi/security_scheme/http/bearer.rb
94
- - lib/jsapi/meta/openapi/security_scheme/http/other.rb
95
- - lib/jsapi/meta/openapi/security_scheme/oauth2.rb
96
- - lib/jsapi/meta/openapi/security_scheme/open_id_connect.rb
97
- - lib/jsapi/meta/openapi/server.rb
98
- - lib/jsapi/meta/openapi/server_variable.rb
99
- - lib/jsapi/meta/openapi/tag.rb
100
83
  - lib/jsapi/meta/openapi/version.rb
101
84
  - lib/jsapi/meta/operation.rb
102
85
  - lib/jsapi/meta/parameter.rb
103
86
  - lib/jsapi/meta/parameter/model.rb
104
87
  - lib/jsapi/meta/parameter/reference.rb
88
+ - lib/jsapi/meta/parameter/to_openapi.rb
105
89
  - lib/jsapi/meta/property.rb
106
90
  - lib/jsapi/meta/reference_error.rb
107
91
  - lib/jsapi/meta/request_body.rb
@@ -137,6 +121,19 @@ files:
137
121
  - lib/jsapi/meta/schema/validation/minimum.rb
138
122
  - lib/jsapi/meta/schema/validation/multiple_of.rb
139
123
  - lib/jsapi/meta/schema/validation/pattern.rb
124
+ - lib/jsapi/meta/security_requirement.rb
125
+ - lib/jsapi/meta/security_scheme.rb
126
+ - lib/jsapi/meta/security_scheme/api_key.rb
127
+ - lib/jsapi/meta/security_scheme/base.rb
128
+ - lib/jsapi/meta/security_scheme/http.rb
129
+ - lib/jsapi/meta/security_scheme/http/basic.rb
130
+ - lib/jsapi/meta/security_scheme/http/bearer.rb
131
+ - lib/jsapi/meta/security_scheme/http/other.rb
132
+ - lib/jsapi/meta/security_scheme/oauth2.rb
133
+ - lib/jsapi/meta/security_scheme/open_id_connect.rb
134
+ - lib/jsapi/meta/server.rb
135
+ - lib/jsapi/meta/server_variable.rb
136
+ - lib/jsapi/meta/tag.rb
140
137
  - lib/jsapi/model.rb
141
138
  - lib/jsapi/model/base.rb
142
139
  - lib/jsapi/model/error.rb
@@ -167,5 +164,5 @@ requirements: []
167
164
  rubygems_version: 3.5.6
168
165
  signing_key:
169
166
  specification_version: 4
170
- summary: Build JSON APIs with Rails
167
+ summary: Easily build OpenAPI compliant APIs with Rails.
171
168
  test_files: []
@@ -1,62 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Jsapi
4
- module DSL
5
- class Node
6
- def initialize(meta_model, &block)
7
- @_meta_model = meta_model
8
- instance_eval(&block) if block
9
- end
10
-
11
- def method_missing(*args, &block) # :nodoc:
12
- _keyword(*args, &block)
13
- end
14
-
15
- def respond_to_missing?(*args) # :nodoc:
16
- _keyword?(args.first)
17
- end
18
-
19
- private
20
-
21
- attr_reader :_meta_model
22
-
23
- def _define(*args, &block)
24
- block.call
25
- rescue Error => e
26
- raise e.prepend_origin(args.compact.join(' '))
27
- rescue StandardError => e
28
- raise Error.new(e, args.compact.join(' ').presence)
29
- end
30
-
31
- def _eval(model, klass = Node, &block)
32
- return unless block
33
-
34
- if model.reference?
35
- raise Error, 'reference cannot be specified together with a block'
36
- end
37
-
38
- klass.new(model, &block)
39
- end
40
-
41
- def _find_method(name)
42
- ["#{name}=", "add_#{name}"].find do |method|
43
- _meta_model.respond_to?(method)
44
- end
45
- end
46
-
47
- def _keyword(name, *params, &block)
48
- method = _find_method(name)
49
- raise "unsupported method: #{name}" unless method
50
-
51
- _define(name) do
52
- value = _meta_model.public_send(method, *params)
53
- _eval(value, &block)
54
- end
55
- end
56
-
57
- def _keyword?(name)
58
- _find_method(name).present?
59
- end
60
- end
61
- end
62
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Jsapi
4
- module DSL
5
- module OpenAPI
6
- # Used to specify details of a callback.
7
- class Callback < Node
8
-
9
- # Adds a callback operation.
10
- #
11
- # operation '{$request.query.foo}' do
12
- # parameter 'bar', type: 'string'
13
- # end
14
- def operation(expression, **keywords, &block)
15
- _define('operation', expression.inspect) do
16
- operation_model = _meta_model.add_operation(expression, keywords)
17
- Operation.new(operation_model, &block) if block
18
- end
19
- end
20
- end
21
- end
22
- end
23
- end
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Jsapi
4
- module DSL
5
- module OpenAPI
6
- module Callbacks
7
- # Defines an \OpenAPI callback or refers a reusable callback.
8
- #
9
- # # define a callback
10
- # callback 'foo' do
11
- # operation '{$request.query.foo}'
12
- # end
13
- #
14
- # # refer a reusable callback
15
- # callback ref: 'foo'
16
- #
17
- # Refers the reusable callback with the same name if neither any
18
- # keywords nor a block is specified.
19
- #
20
- # callback 'foo'
21
- #
22
- def callback(name = nil, **keywords, &block)
23
- _define('callback', name&.inspect) do
24
- name = keywords[:ref] if name.nil?
25
- keywords = { ref: name } unless keywords.any? || block
26
-
27
- callback_model = _meta_model.add_callback(name, keywords)
28
- _eval(callback_model, OpenAPI::Callback, &block)
29
- end
30
- end
31
- end
32
- end
33
- end
34
- end
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Jsapi
4
- module DSL
5
- module OpenAPI
6
- module Examples
7
- # Adds an example.
8
- #
9
- # example 'foo', value: 'bar'
10
- #
11
- # example 'foo'
12
- #
13
- # The default name is <code>'default'</code>.
14
- def example(name_or_value = nil, **keywords, &block)
15
- _define('example', name_or_value&.inspect) do
16
- if keywords.any? || block
17
- # example 'foo', value: 'bar', ...
18
- name = name_or_value
19
- else
20
- # example 'foo'
21
- name = nil
22
- keywords = { value: name_or_value }
23
- end
24
-
25
- example = _meta_model.add_example(name, keywords)
26
- Node.new(example, &block) if block
27
- end
28
- end
29
- end
30
- end
31
- end
32
- end
@@ -1,126 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Jsapi
4
- module DSL
5
- module OpenAPI
6
- # Used to specify details of an \OpenAPI object.
7
- class Root < Node
8
- include Callbacks
9
-
10
- ##
11
- # :method: base_path
12
- # :args: arg
13
- # Specifies the base path of the API.
14
- #
15
- # base_path '/foo'
16
- #
17
- # See Meta::OpenAPI::Root#base_path for further information.
18
-
19
- ##
20
- # :method: consumes
21
- # :args: mime_types
22
- # Specifies one or more MIME types the API can consume.
23
- #
24
- # consumes 'application/json'
25
- #
26
- # consumes %w[application/json application/pdf]
27
- #
28
- # See Meta::OpenAPI::Root#consumes for further information.
29
-
30
- ##
31
- # :method: external_docs
32
- # :args: **keywords, &block
33
- # Specifies the external documentation.
34
- #
35
- # external_docs url: 'https://foo.bar'
36
- #
37
- # See Meta::OpenAPI::Root#external_docs for further information.
38
-
39
- ##
40
- # :method: host
41
- # :args: arg
42
- # Specifies the host serving the API.
43
- #
44
- # host 'foo.bar'
45
- #
46
- # See Meta::OpenAPI::Root#host for further information.
47
-
48
- ##
49
- # :method: info
50
- # :args: **keywords, &block
51
- # Specifies general information about the API.
52
- #
53
- # info title: 'foo', version: 1
54
- #
55
- # See Meta::OpenAPI::Root#info for further information.
56
-
57
- ##
58
- # :method: link
59
- # :args: name, **keywords, &block
60
- # Adds a link.
61
- #
62
- # link 'foo', operation_id: 'bar'
63
- #
64
- # See Meta::OpenAPI::Root#links for further information.
65
-
66
- ##
67
- # :method: produces
68
- # :args: mime_types
69
- # Specifies one or more MIME types the API can produce.
70
- #
71
- # produces 'application/json'
72
- #
73
- # produces %w[application/json application/pdf]'
74
- #
75
- # See Meta::OpenAPI::Root#produces for further information.
76
-
77
- ##
78
- # :method: scheme
79
- # :args: arg
80
- # Adds a URI scheme supported by the API.
81
- #
82
- # scheme 'https'
83
- #
84
- # See Meta::OpenAPI::Root#scheme for further information.
85
-
86
- ##
87
- # :method: security_requirement
88
- # :args: **keywords, &block
89
- # Adds a security requirement.
90
- #
91
- # security_requirement do
92
- # scheme 'basic_auth'
93
- # end
94
- #
95
- # See Meta::OpenAPI::Root#security_requirements for further information.
96
-
97
- ##
98
- # :method: security_scheme
99
- # :args: name, **keywords, &block
100
- # Adds a security scheme.
101
- #
102
- # security_scheme 'basic_auth', type: 'http', scheme: 'basic'
103
- #
104
- # See Meta::OpenAPI::Root#security_schemes for further information.
105
-
106
- ##
107
- # :method: server
108
- # :args: arg
109
- # Adds a server providing the API.
110
- #
111
- # server url: 'https://foo.bar'
112
- #
113
- # See Meta::OpenAPI::Root#servers for further information.
114
-
115
- ##
116
- # :method: tag
117
- # :args: **keywords, &block
118
- # Adds a tag.
119
- #
120
- # tag name: 'foo', description: 'description of foo'
121
- #
122
- # See Meta::OpenAPI::Root#tags for further information.
123
- end
124
- end
125
- end
126
- end
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'openapi/callbacks'
4
- require_relative 'openapi/examples'
5
- require_relative 'openapi/callback'
6
- require_relative 'openapi/root'
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Jsapi
4
- module Meta
5
- module OpenAPI
6
- module Callback
7
- # Represents a callback object. Applies to \OpenAPI 3.0 and higher.
8
- class Model < Meta::Base::Model
9
- ##
10
- # :attr: operations
11
- attribute :operations, { String => Object }, default: {}
12
-
13
- undef add_operation
14
-
15
- # Adds a callback operation.
16
- #
17
- # Raises an +ArgumentError+ if +expression+ is blank.
18
- def add_operation(expression, keywords = {})
19
- raise ArgumentError, "expression can't be blank" if expression.blank?
20
-
21
- (@operations ||= {})[expression.to_s] = Operation.new(nil, keywords)
22
- end
23
-
24
- # Returns a hash representing the \OpenAPI callback object.
25
- def to_openapi(version, definitions)
26
- operations.transform_values do |operation|
27
- { operation.method => operation.to_openapi(version, definitions) }
28
- end
29
- end
30
- end
31
- end
32
- end
33
- end
34
- end
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Jsapi
4
- module Meta
5
- module OpenAPI
6
- module Callback
7
- class Reference < Meta::Base::Reference
8
- # Returns a hash representing the \OpenAPI reference object.
9
- def to_openapi(*)
10
- { '$ref': "#/components/callbacks/#{ref}" }
11
- end
12
- end
13
- end
14
- end
15
- end
16
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'callback/model'
4
- require_relative 'callback/reference'
5
-
6
- module Jsapi
7
- module Meta
8
- module OpenAPI
9
- module Callback
10
- class << self
11
- # Creates a callback model or reference.
12
- def new(keywords = {})
13
- return Reference.new(keywords) if keywords.key?(:ref)
14
-
15
- Model.new(keywords)
16
- end
17
- end
18
- end
19
- end
20
- end
21
- end
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Jsapi
4
- module Meta
5
- module OpenAPI
6
- # Represents a contact object.
7
- class Contact < Meta::Base::Model
8
- include Extensions
9
-
10
- ##
11
- # :attr: email
12
- # The email address of the contact.
13
- attribute :email, String
14
-
15
- ##
16
- # :attr: name
17
- # The name of the contact.
18
- attribute :name, String
19
-
20
- ##
21
- # :attr: url
22
- # The URL of the contact.
23
- attribute :url, String
24
-
25
- # Returns a hash representing the \OpenAPI contact object.
26
- def to_openapi(*)
27
- with_openapi_extensions(name: name, url: url, email: email)
28
- end
29
- end
30
- end
31
- end
32
- end
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Jsapi
4
- module Meta
5
- module OpenAPI
6
- module Example
7
- class Model < Meta::Base::Model
8
- include Extensions
9
-
10
- ##
11
- # :attr: description
12
- # The optional description of the example.
13
- attribute :description, String
14
-
15
- ##
16
- # :attr: external
17
- # If true, +value+ is interpreted as a URI pointing to an external sample value.
18
- attribute :external, values: [true, false]
19
-
20
- ##
21
- # :attr: summary
22
- # The optional summary of the example.
23
- attribute :summary, String
24
-
25
- ##
26
- # :attr: value
27
- # The sample value.
28
- attribute :value
29
-
30
- # Returns a hash representing the \OpenAPI example object.
31
- def to_openapi(*)
32
- with_openapi_extensions(summary: summary, description: description).tap do |hash|
33
- if external?
34
- hash[:external_value] = value
35
- else
36
- hash[:value] = value
37
- end
38
- end
39
- end
40
- end
41
- end
42
- end
43
- end
44
- end
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Jsapi
4
- module Meta
5
- module OpenAPI
6
- module Example
7
- class Reference < Meta::Base::Reference
8
- # Returns a hash representing the \OpenAPI reference object.
9
- def to_openapi(*)
10
- { '$ref': "#/components/examples/#{ref}" }
11
- end
12
- end
13
- end
14
- end
15
- end
16
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'example/model'
4
- require_relative 'example/reference'
5
-
6
- module Jsapi
7
- module Meta
8
- module OpenAPI
9
- module Example
10
- class << self
11
- # Creates a new example model or reference.
12
- def new(keywords = {})
13
- return Reference.new(keywords) if keywords.key?(:ref)
14
-
15
- Model.new(keywords)
16
- end
17
- end
18
- end
19
- end
20
- end
21
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Jsapi
4
- module Meta
5
- module OpenAPI
6
- # Represents an external documentation object.
7
- class ExternalDocumentation < Meta::Base::Model
8
- include Extensions
9
-
10
- ##
11
- # :attr: description
12
- # The optional description of the external documentation.
13
- attribute :description, String
14
-
15
- ##
16
- # :attr: url
17
- # The URL of the external documentation.
18
- attribute :url, String
19
-
20
- # Returns a hash representing the \OpenAPI external documentation object.
21
- def to_openapi(*)
22
- with_openapi_extensions(url: url, description: description)
23
- end
24
- end
25
- end
26
- end
27
- end