jsapi 0.4.1 → 0.6.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 +4 -4
- data/lib/jsapi/controller/error_result.rb +11 -4
- data/lib/jsapi/controller/methods.rb +39 -13
- data/lib/jsapi/controller/parameters.rb +25 -23
- data/lib/jsapi/controller/parameters_invalid.rb +10 -7
- data/lib/jsapi/controller/response.rb +36 -19
- data/lib/jsapi/dsl/class_methods.rb +18 -10
- data/lib/jsapi/dsl/definitions.rb +11 -0
- data/lib/jsapi/dsl/openapi/callbacks.rb +34 -0
- data/lib/jsapi/dsl/openapi/examples.rb +32 -0
- data/lib/jsapi/dsl/openapi.rb +2 -0
- data/lib/jsapi/dsl/operation.rb +1 -1
- data/lib/jsapi/dsl/parameter.rb +1 -1
- data/lib/jsapi/dsl/request_body.rb +1 -1
- data/lib/jsapi/dsl/response.rb +1 -1
- data/lib/jsapi/dsl.rb +1 -3
- data/lib/jsapi/helpers/invalid_value_helper.rb +17 -0
- data/lib/jsapi/invalid_argument_error.rb +12 -0
- data/lib/jsapi/invalid_value_error.rb +12 -0
- data/lib/jsapi/json/object.rb +15 -14
- data/lib/jsapi/json.rb +1 -1
- data/lib/jsapi/meta/{attributes/class_methods.rb → base/attributes.rb} +7 -5
- data/lib/jsapi/meta/base/model.rb +44 -0
- data/lib/jsapi/meta/base/reference.rb +36 -0
- data/lib/jsapi/meta/{attributes → base}/type_caster.rb +2 -2
- data/lib/jsapi/meta/base.rb +4 -40
- data/lib/jsapi/meta/callable/symbol_evaluator.rb +30 -0
- data/lib/jsapi/meta/callable/symbol_sequence_evaluator.rb +29 -0
- data/lib/jsapi/meta/callable.rb +28 -0
- data/lib/jsapi/meta/defaults.rb +28 -0
- data/lib/jsapi/meta/definitions.rb +30 -25
- data/lib/jsapi/meta/openapi/callback/model.rb +1 -1
- data/lib/jsapi/meta/openapi/callback/reference.rb +1 -1
- data/lib/jsapi/meta/openapi/contact.rb +1 -1
- data/lib/jsapi/meta/openapi/example/model.rb +1 -1
- data/lib/jsapi/meta/openapi/example/reference.rb +1 -1
- data/lib/jsapi/meta/openapi/external_documentation.rb +1 -1
- data/lib/jsapi/meta/openapi/header/model.rb +19 -4
- data/lib/jsapi/meta/openapi/header/reference.rb +1 -1
- data/lib/jsapi/meta/openapi/info.rb +1 -1
- data/lib/jsapi/meta/openapi/license.rb +1 -1
- data/lib/jsapi/meta/openapi/link/model.rb +1 -1
- data/lib/jsapi/meta/openapi/link/reference.rb +1 -1
- data/lib/jsapi/meta/openapi/oauth_flow.rb +2 -2
- data/lib/jsapi/meta/openapi/root.rb +6 -20
- data/lib/jsapi/meta/openapi/security_requirement.rb +2 -2
- data/lib/jsapi/meta/openapi/security_scheme/base.rb +1 -1
- data/lib/jsapi/meta/openapi/security_scheme.rb +1 -1
- data/lib/jsapi/meta/openapi/server.rb +1 -1
- data/lib/jsapi/meta/openapi/server_variable.rb +1 -1
- data/lib/jsapi/meta/openapi/tag.rb +1 -1
- data/lib/jsapi/meta/operation.rb +21 -24
- data/lib/jsapi/meta/parameter/model.rb +6 -5
- data/lib/jsapi/meta/parameter/reference.rb +1 -1
- data/lib/jsapi/meta/property.rb +11 -5
- data/lib/jsapi/meta/request_body/model.rb +10 -5
- data/lib/jsapi/meta/request_body/reference.rb +1 -1
- data/lib/jsapi/meta/response/model.rb +11 -6
- data/lib/jsapi/meta/response/reference.rb +1 -1
- data/lib/jsapi/meta/schema/additional_properties.rb +8 -7
- data/lib/jsapi/meta/schema/base.rb +13 -7
- data/lib/jsapi/meta/schema/delegator.rb +2 -2
- data/lib/jsapi/meta/schema/discriminator.rb +3 -11
- data/lib/jsapi/meta/schema/object.rb +27 -4
- data/lib/jsapi/meta/schema/reference.rb +1 -1
- data/lib/jsapi/meta/schema.rb +12 -5
- data/lib/jsapi/meta.rb +3 -4
- data/lib/jsapi/model/attributes.rb +10 -4
- data/lib/jsapi/model/base.rb +1 -1
- data/lib/jsapi/model/nestable.rb +25 -10
- data/lib/jsapi/model/nested_error.rb +2 -2
- data/lib/jsapi/version.rb +1 -1
- data/lib/jsapi.rb +4 -0
- metadata +15 -10
- data/lib/jsapi/dsl/callbacks.rb +0 -32
- data/lib/jsapi/dsl/examples.rb +0 -30
- data/lib/jsapi/meta/attributes.rb +0 -4
- data/lib/jsapi/meta/base_reference.rb +0 -34
- data/lib/jsapi/meta/invalid_argument_error.rb +0 -12
data/lib/jsapi/model/nestable.rb
CHANGED
@@ -3,33 +3,48 @@
|
|
3
3
|
module Jsapi
|
4
4
|
module Model
|
5
5
|
module Nestable
|
6
|
-
|
7
6
|
# Returns the value assigned to +name+.
|
8
7
|
def [](name)
|
9
8
|
raw_attributes[name&.to_s]&.value
|
10
9
|
end
|
11
10
|
|
11
|
+
# Returns a hash containing the additional attributes.
|
12
|
+
def additional_attributes
|
13
|
+
raw_additional_attributes.transform_values(&:value)
|
14
|
+
end
|
15
|
+
|
12
16
|
# Returns +true+ if +name+ is present, false +otherwise+.
|
13
17
|
def attribute?(name)
|
14
18
|
raw_attributes.key?(name&.to_s)
|
15
19
|
end
|
16
20
|
|
17
|
-
# Returns a
|
21
|
+
# Returns a hash containing all attributes.
|
18
22
|
def attributes
|
19
23
|
raw_attributes.transform_values(&:value)
|
20
24
|
end
|
21
25
|
|
26
|
+
def inspect # :nodoc:
|
27
|
+
"#<#{self.class.name} #{
|
28
|
+
raw_attributes
|
29
|
+
.merge('additional_attributes' => raw_additional_attributes)
|
30
|
+
.map { |k, v| "#{k}: #{v.inspect}" }
|
31
|
+
.join(', ')
|
32
|
+
}>"
|
33
|
+
end
|
34
|
+
|
22
35
|
private
|
23
36
|
|
24
37
|
def validate_attributes(errors)
|
25
|
-
raw_attributes.map do |
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
38
|
+
[raw_attributes, raw_additional_attributes].compact.map do |attributes|
|
39
|
+
attributes.map do |name, value|
|
40
|
+
errors.nested(name) do
|
41
|
+
next value.validate(errors) unless value.respond_to?(:model)
|
42
|
+
next true if (model = value.model).valid?
|
43
|
+
|
44
|
+
errors.merge!(model)
|
45
|
+
false
|
46
|
+
end
|
47
|
+
end.all?
|
33
48
|
end.all?
|
34
49
|
end
|
35
50
|
end
|
@@ -4,10 +4,10 @@ module Jsapi
|
|
4
4
|
module Model
|
5
5
|
# Wraps an error related to a nested model.
|
6
6
|
class NestedError
|
7
|
-
attr_reader :attribute, :error
|
8
|
-
|
9
7
|
delegate_missing_to :error
|
10
8
|
|
9
|
+
attr_reader :attribute, :error
|
10
|
+
|
11
11
|
def initialize(attribute, error)
|
12
12
|
@attribute = attribute
|
13
13
|
@error = error
|
data/lib/jsapi/version.rb
CHANGED
data/lib/jsapi.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jsapi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
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-
|
11
|
+
date: 2024-09-15 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Jsapi can be used to read requests, produce responses and create OpenAPI
|
14
14
|
documents
|
@@ -26,20 +26,23 @@ 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/callbacks.rb
|
30
29
|
- lib/jsapi/dsl/class_methods.rb
|
31
30
|
- lib/jsapi/dsl/definitions.rb
|
32
31
|
- lib/jsapi/dsl/error.rb
|
33
|
-
- lib/jsapi/dsl/examples.rb
|
34
32
|
- lib/jsapi/dsl/node.rb
|
35
33
|
- lib/jsapi/dsl/openapi.rb
|
36
34
|
- lib/jsapi/dsl/openapi/callback.rb
|
35
|
+
- lib/jsapi/dsl/openapi/callbacks.rb
|
36
|
+
- lib/jsapi/dsl/openapi/examples.rb
|
37
37
|
- lib/jsapi/dsl/openapi/root.rb
|
38
38
|
- lib/jsapi/dsl/operation.rb
|
39
39
|
- lib/jsapi/dsl/parameter.rb
|
40
40
|
- lib/jsapi/dsl/request_body.rb
|
41
41
|
- lib/jsapi/dsl/response.rb
|
42
42
|
- lib/jsapi/dsl/schema.rb
|
43
|
+
- lib/jsapi/helpers/invalid_value_helper.rb
|
44
|
+
- lib/jsapi/invalid_argument_error.rb
|
45
|
+
- lib/jsapi/invalid_value_error.rb
|
43
46
|
- lib/jsapi/json.rb
|
44
47
|
- lib/jsapi/json/array.rb
|
45
48
|
- lib/jsapi/json/boolean.rb
|
@@ -50,14 +53,17 @@ files:
|
|
50
53
|
- lib/jsapi/json/string.rb
|
51
54
|
- lib/jsapi/json/value.rb
|
52
55
|
- lib/jsapi/meta.rb
|
53
|
-
- lib/jsapi/meta/attributes.rb
|
54
|
-
- lib/jsapi/meta/attributes/class_methods.rb
|
55
|
-
- lib/jsapi/meta/attributes/type_caster.rb
|
56
56
|
- lib/jsapi/meta/base.rb
|
57
|
-
- lib/jsapi/meta/
|
57
|
+
- lib/jsapi/meta/base/attributes.rb
|
58
|
+
- lib/jsapi/meta/base/model.rb
|
59
|
+
- lib/jsapi/meta/base/reference.rb
|
60
|
+
- lib/jsapi/meta/base/type_caster.rb
|
61
|
+
- lib/jsapi/meta/callable.rb
|
62
|
+
- lib/jsapi/meta/callable/symbol_evaluator.rb
|
63
|
+
- lib/jsapi/meta/callable/symbol_sequence_evaluator.rb
|
64
|
+
- lib/jsapi/meta/defaults.rb
|
58
65
|
- lib/jsapi/meta/definitions.rb
|
59
66
|
- lib/jsapi/meta/existence.rb
|
60
|
-
- lib/jsapi/meta/invalid_argument_error.rb
|
61
67
|
- lib/jsapi/meta/openapi.rb
|
62
68
|
- lib/jsapi/meta/openapi/callback.rb
|
63
69
|
- lib/jsapi/meta/openapi/callback/model.rb
|
@@ -146,7 +152,6 @@ licenses:
|
|
146
152
|
- MIT
|
147
153
|
metadata:
|
148
154
|
homepage_uri: https://github.com/dmgoeller/jsapi
|
149
|
-
source_code_uri: https://github.com/dmgoeller/jsapi
|
150
155
|
post_install_message:
|
151
156
|
rdoc_options: []
|
152
157
|
require_paths:
|
data/lib/jsapi/dsl/callbacks.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Jsapi
|
4
|
-
module DSL
|
5
|
-
module Callbacks
|
6
|
-
# Defines an \OpenAPI callback or refers a reusable callback.
|
7
|
-
#
|
8
|
-
# # define a callback
|
9
|
-
# callback 'foo' do
|
10
|
-
# operation '{$request.query.foo}'
|
11
|
-
# end
|
12
|
-
#
|
13
|
-
# # refer a reusable callback
|
14
|
-
# callback ref: 'foo'
|
15
|
-
#
|
16
|
-
# Refers the reusable callback with the same name if neither any
|
17
|
-
# keywords nor a block is specified.
|
18
|
-
#
|
19
|
-
# callback 'foo'
|
20
|
-
#
|
21
|
-
def callback(name = nil, **keywords, &block)
|
22
|
-
_define('callback', name&.inspect) do
|
23
|
-
name = keywords[:ref] if name.nil?
|
24
|
-
keywords = { ref: name } unless keywords.any? || block
|
25
|
-
|
26
|
-
callback_model = _meta_model.add_callback(name, keywords)
|
27
|
-
_eval(callback_model, OpenAPI::Callback, &block)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
data/lib/jsapi/dsl/examples.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Jsapi
|
4
|
-
module DSL
|
5
|
-
module Examples
|
6
|
-
# Adds an example.
|
7
|
-
#
|
8
|
-
# example 'foo', value: 'bar'
|
9
|
-
#
|
10
|
-
# example 'foo'
|
11
|
-
#
|
12
|
-
# The default name is <code>'default'</code>.
|
13
|
-
def example(name_or_value = nil, **keywords, &block)
|
14
|
-
_define('example', name_or_value&.inspect) do
|
15
|
-
if keywords.any? || block
|
16
|
-
# example 'foo', value: 'bar', ...
|
17
|
-
name = name_or_value
|
18
|
-
else
|
19
|
-
# example 'foo'
|
20
|
-
name = nil
|
21
|
-
keywords = { value: name_or_value }
|
22
|
-
end
|
23
|
-
|
24
|
-
example = _meta_model.add_example(name, keywords)
|
25
|
-
Node.new(example, &block) if block
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Jsapi
|
4
|
-
module Meta
|
5
|
-
# The base reference class.
|
6
|
-
class BaseReference < Base
|
7
|
-
##
|
8
|
-
# :attr: ref
|
9
|
-
# The name of the referred object.
|
10
|
-
attribute :ref, String
|
11
|
-
|
12
|
-
# Returns the name of the method to be invoked to look up the referred object
|
13
|
-
# in a Definitions instance.
|
14
|
-
def self.lookup_method_name
|
15
|
-
@lookup_method_name ||=
|
16
|
-
name.delete_suffix('::Reference').demodulize.underscore
|
17
|
-
end
|
18
|
-
|
19
|
-
def reference? # :nodoc:
|
20
|
-
true
|
21
|
-
end
|
22
|
-
|
23
|
-
# Resolves +ref+ by looking up the object with that name in +definitions+.
|
24
|
-
#
|
25
|
-
# Raises a ReferenceError if +ref+ could not be resolved.
|
26
|
-
def resolve(definitions)
|
27
|
-
object = definitions.send(self.class.lookup_method_name, ref)
|
28
|
-
raise ReferenceError, ref if object.nil?
|
29
|
-
|
30
|
-
object.resolve(definitions)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Jsapi
|
4
|
-
module Meta
|
5
|
-
# Raised when an argument isn't contained in the list of valid values.
|
6
|
-
class InvalidArgumentError < ArgumentError
|
7
|
-
def initialize(name, value, values)
|
8
|
-
super("#{name} must be one of #{values.inspect}, is #{value.inspect}")
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|