jsapi 2.1.2 → 3.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/client/base.rb +182 -0
- data/lib/jsapi/client/exceptions.rb +45 -0
- data/lib/jsapi/client/request.rb +204 -0
- data/lib/jsapi/client/response.rb +120 -0
- data/lib/jsapi/client/session/base.rb +61 -0
- data/lib/jsapi/client/session/logger.rb +52 -0
- data/lib/jsapi/client/session/single_request.rb +16 -0
- data/lib/jsapi/client/session/test/class_methods.rb +49 -0
- data/lib/jsapi/client/session/test/response.rb +56 -0
- data/lib/jsapi/client/session/test/spy.rb +43 -0
- data/lib/jsapi/client/session/test.rb +17 -0
- data/lib/jsapi/client/session.rb +6 -0
- data/lib/jsapi/client.rb +7 -0
- data/lib/jsapi/configuration.rb +2 -2
- data/lib/jsapi/controller/authentication/credentials/http/bearer.rb +5 -12
- data/lib/jsapi/controller/authentication/credentials.rb +4 -4
- data/lib/jsapi/controller/authentication.rb +3 -3
- data/lib/jsapi/controller/methods.rb +43 -77
- data/lib/jsapi/controller/parameters.rb +6 -6
- data/lib/jsapi/controller/response.rb +7 -7
- data/lib/jsapi/{meta/definitions.rb → definition/api.rb} +62 -40
- data/lib/jsapi/{meta → definition}/callable/symbol_evaluator.rb +1 -1
- data/lib/jsapi/{meta → definition}/callable/symbol_sequence_evaluator.rb +1 -1
- data/lib/jsapi/{meta → definition}/callable.rb +1 -1
- data/lib/jsapi/{meta → definition}/callback/base.rb +5 -5
- data/lib/jsapi/{meta → definition}/callback/reference.rb +1 -1
- data/lib/jsapi/{meta → definition}/callback.rb +1 -1
- data/lib/jsapi/{meta → definition}/contact.rb +1 -1
- data/lib/jsapi/{meta → definition}/content.rb +11 -11
- data/lib/jsapi/{meta → definition}/defaults.rb +1 -1
- data/lib/jsapi/{meta → definition}/example/base.rb +1 -1
- data/lib/jsapi/{meta → definition}/example/builder.rb +4 -4
- data/lib/jsapi/{meta → definition}/example/reference.rb +1 -1
- data/lib/jsapi/{meta → definition}/example.rb +1 -1
- data/lib/jsapi/{meta → definition}/existence.rb +1 -1
- data/lib/jsapi/{meta → definition}/external_documentation.rb +1 -1
- data/lib/jsapi/{meta → definition}/header/base.rb +1 -1
- data/lib/jsapi/{meta → definition}/header/reference.rb +1 -1
- data/lib/jsapi/{meta → definition}/header.rb +1 -1
- data/lib/jsapi/{meta → definition}/info.rb +1 -1
- data/lib/jsapi/{meta → definition}/license.rb +1 -1
- data/lib/jsapi/{meta → definition}/link/base.rb +1 -1
- data/lib/jsapi/{meta → definition}/link/reference.rb +1 -1
- data/lib/jsapi/{meta → definition}/link.rb +1 -1
- data/lib/jsapi/{meta → definition}/model/attributes/class_methods.rb +1 -1
- data/lib/jsapi/{meta → definition}/model/attributes/frozen_error.rb +1 -1
- data/lib/jsapi/{meta → definition}/model/attributes/type_caster.rb +2 -2
- data/lib/jsapi/{meta → definition}/model/attributes.rb +1 -1
- data/lib/jsapi/{meta → definition}/model/base.rb +1 -1
- data/lib/jsapi/{meta → definition}/model/reference.rb +11 -11
- data/lib/jsapi/{meta → definition}/model/wrappable.rb +3 -3
- data/lib/jsapi/{meta → definition}/model/wrapper.rb +5 -5
- data/lib/jsapi/{meta → definition}/oauth_flow.rb +1 -1
- data/lib/jsapi/{meta → definition}/openapi/extensions.rb +1 -1
- data/lib/jsapi/{meta → definition}/openapi/path_item.rb +5 -5
- data/lib/jsapi/{meta → definition}/openapi/version.rb +2 -2
- data/lib/jsapi/{meta → definition}/openapi.rb +1 -1
- data/lib/jsapi/{meta → definition}/operation.rb +108 -62
- data/lib/jsapi/{meta → definition}/parameter/base.rb +11 -11
- data/lib/jsapi/{meta → definition}/parameter/reference.rb +5 -5
- data/lib/jsapi/{meta → definition}/parameter/wrapper.rb +2 -2
- data/lib/jsapi/{meta → definition}/parameter.rb +1 -1
- data/lib/jsapi/{meta → definition}/path.rb +1 -1
- data/lib/jsapi/{meta → definition}/pathname.rb +1 -1
- data/lib/jsapi/{meta → definition}/property.rb +2 -2
- data/lib/jsapi/{meta → definition}/reference_error.rb +1 -1
- data/lib/jsapi/{meta → definition}/request_body/base.rb +1 -1
- data/lib/jsapi/{meta → definition}/request_body/reference.rb +1 -1
- data/lib/jsapi/{meta → definition}/request_body/wrapper.rb +2 -2
- data/lib/jsapi/{meta → definition}/request_body.rb +1 -1
- data/lib/jsapi/{meta → definition}/rescue_handler.rb +1 -1
- data/lib/jsapi/{meta → definition}/response/base.rb +4 -4
- data/lib/jsapi/{meta → definition}/response/reference.rb +1 -1
- data/lib/jsapi/{meta → definition}/response/wrapper.rb +17 -5
- data/lib/jsapi/{meta → definition}/response.rb +1 -1
- data/lib/jsapi/{meta → definition}/schema/additional_properties.rb +2 -2
- data/lib/jsapi/{meta → definition}/schema/array.rb +2 -2
- data/lib/jsapi/{meta → definition}/schema/base.rb +1 -1
- data/lib/jsapi/{meta → definition}/schema/boolean.rb +1 -1
- data/lib/jsapi/{meta → definition}/schema/boundary.rb +1 -1
- data/lib/jsapi/{meta → definition}/schema/conversion.rb +1 -1
- data/lib/jsapi/{meta → definition}/schema/discriminator.rb +1 -1
- data/lib/jsapi/{meta → definition}/schema/integer.rb +1 -1
- data/lib/jsapi/{meta → definition}/schema/number.rb +1 -1
- data/lib/jsapi/{meta → definition}/schema/numeric.rb +1 -1
- data/lib/jsapi/{meta → definition}/schema/object.rb +13 -13
- data/lib/jsapi/{meta → definition}/schema/reference.rb +1 -1
- data/lib/jsapi/{meta → definition}/schema/string.rb +1 -1
- data/lib/jsapi/{meta → definition}/schema/validation/base.rb +1 -1
- data/lib/jsapi/{meta → definition}/schema/validation/enum.rb +1 -1
- data/lib/jsapi/{meta → definition}/schema/validation/max_items.rb +1 -1
- data/lib/jsapi/{meta → definition}/schema/validation/max_length.rb +1 -1
- data/lib/jsapi/{meta → definition}/schema/validation/maximum.rb +1 -1
- data/lib/jsapi/{meta → definition}/schema/validation/min_items.rb +1 -1
- data/lib/jsapi/{meta → definition}/schema/validation/min_length.rb +1 -1
- data/lib/jsapi/{meta → definition}/schema/validation/minimum.rb +1 -1
- data/lib/jsapi/{meta → definition}/schema/validation/multiple_of.rb +1 -1
- data/lib/jsapi/{meta → definition}/schema/validation/pattern.rb +1 -1
- data/lib/jsapi/{meta → definition}/schema/wrapper.rb +18 -4
- data/lib/jsapi/{meta → definition}/schema.rb +5 -5
- data/lib/jsapi/{meta → definition}/security_requirement.rb +1 -1
- data/lib/jsapi/{meta → definition}/security_scheme/api_key.rb +1 -1
- data/lib/jsapi/{meta → definition}/security_scheme/base.rb +1 -1
- data/lib/jsapi/{meta → definition}/security_scheme/http/basic.rb +1 -1
- data/lib/jsapi/{meta → definition}/security_scheme/http/bearer.rb +1 -1
- data/lib/jsapi/{meta → definition}/security_scheme/http/other.rb +1 -1
- data/lib/jsapi/{meta → definition}/security_scheme/http.rb +1 -1
- data/lib/jsapi/{meta → definition}/security_scheme/mutual_tls.rb +1 -1
- data/lib/jsapi/{meta → definition}/security_scheme/oauth2.rb +1 -1
- data/lib/jsapi/{meta → definition}/security_scheme/open_id_connect.rb +1 -1
- data/lib/jsapi/{meta → definition}/security_scheme.rb +1 -1
- data/lib/jsapi/{meta → definition}/server.rb +24 -1
- data/lib/jsapi/{meta → definition}/server_variable.rb +1 -1
- data/lib/jsapi/{meta → definition}/tag.rb +1 -1
- data/lib/jsapi/definition.rb +33 -0
- data/lib/jsapi/dsl/{definitions.rb → api.rb} +48 -48
- data/lib/jsapi/dsl/base.rb +7 -7
- data/lib/jsapi/dsl/class_methods.rb +34 -32
- data/lib/jsapi/dsl/examples.rb +1 -1
- data/lib/jsapi/dsl/operation.rb +9 -7
- data/lib/jsapi/dsl/parameter.rb +1 -1
- data/lib/jsapi/dsl/path.rb +8 -6
- data/lib/jsapi/dsl/response.rb +5 -5
- data/lib/jsapi/dsl/schema.rb +17 -17
- data/lib/jsapi/dsl/shared_operation_methods.rb +11 -26
- data/lib/jsapi/dsl.rb +2 -2
- data/lib/jsapi/model/errors.rb +3 -3
- data/lib/jsapi/status/code.rb +20 -0
- data/lib/jsapi/support/messages.rb +27 -0
- data/lib/jsapi/support.rb +3 -0
- data/lib/jsapi/version.rb +1 -1
- data/lib/jsapi.rb +3 -3
- metadata +115 -102
- data/lib/jsapi/jsonify_error.rb +0 -17
- data/lib/jsapi/messages.rb +0 -19
- data/lib/jsapi/meta.rb +0 -38
- /data/lib/jsapi/{meta → definition}/model.rb +0 -0
- /data/lib/jsapi/{meta → definition}/schema/validation.rb +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Jsapi
|
|
4
|
-
module
|
|
4
|
+
module Definition
|
|
5
5
|
module Response
|
|
6
6
|
# Specifies a response.
|
|
7
7
|
class Base < Model::Base
|
|
@@ -98,13 +98,13 @@ module Jsapi
|
|
|
98
98
|
end
|
|
99
99
|
|
|
100
100
|
# Returns a hash representing the \OpenAPI response object.
|
|
101
|
-
def to_openapi(version,
|
|
101
|
+
def to_openapi(version, api)
|
|
102
102
|
version = OpenAPI::Version.from(version)
|
|
103
103
|
|
|
104
104
|
with_openapi_extensions(
|
|
105
105
|
if version == OpenAPI::V2_0
|
|
106
106
|
media_type, content = contents.first
|
|
107
|
-
example = content&.example_data_value(
|
|
107
|
+
example = content&.example_data_value(api, locale: locale)
|
|
108
108
|
{
|
|
109
109
|
description: description,
|
|
110
110
|
schema: content&.schema&.to_openapi(version),
|
|
@@ -131,7 +131,7 @@ module Jsapi
|
|
|
131
131
|
nth_media_type,
|
|
132
132
|
nth_content.to_openapi(
|
|
133
133
|
version,
|
|
134
|
-
|
|
134
|
+
api,
|
|
135
135
|
locale: locale,
|
|
136
136
|
media_type: nth_media_type
|
|
137
137
|
)
|
|
@@ -1,26 +1,38 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Jsapi
|
|
4
|
-
module
|
|
4
|
+
module Definition
|
|
5
5
|
module Response
|
|
6
6
|
class Wrapper < Model::Wrapper
|
|
7
7
|
# The locale of the wrapped response or reference.
|
|
8
8
|
attr_reader :locale
|
|
9
9
|
|
|
10
|
-
def initialize(response,
|
|
11
|
-
@locale = response.resolve_lazily(
|
|
10
|
+
def initialize(response, api)
|
|
11
|
+
@locale = response.resolve_lazily(api).locale
|
|
12
12
|
super
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
+
def content?
|
|
16
|
+
contents.lazy.any?
|
|
17
|
+
end
|
|
18
|
+
|
|
15
19
|
def contents
|
|
16
|
-
super.transform_values { |content| Content.wrap(content,
|
|
20
|
+
super.transform_values { |content| Content.wrap(content, api) }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def content_for(*media_ranges)
|
|
24
|
+
media_type_and_content_for(*media_ranges)&.second
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def header_for(name)
|
|
28
|
+
(@downcased_headers ||= headers.transform_keys(&:downcase))[name.to_s.downcase]
|
|
17
29
|
end
|
|
18
30
|
|
|
19
31
|
def media_type_and_content_for(*media_ranges)
|
|
20
32
|
super&.then do |media_type_and_content|
|
|
21
33
|
[
|
|
22
34
|
media_type_and_content.first,
|
|
23
|
-
Content.wrap(media_type_and_content.second,
|
|
35
|
+
Content.wrap(media_type_and_content.second, api)
|
|
24
36
|
]
|
|
25
37
|
end
|
|
26
38
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Jsapi
|
|
4
|
-
module
|
|
4
|
+
module Definition
|
|
5
5
|
module Schema
|
|
6
6
|
class AdditionalProperties < Model::Base
|
|
7
7
|
include Model::Wrappable
|
|
@@ -29,7 +29,7 @@ module Jsapi
|
|
|
29
29
|
|
|
30
30
|
class Wrapper < Model::Wrapper
|
|
31
31
|
def schema
|
|
32
|
-
@schema ||= Schema.wrap(super,
|
|
32
|
+
@schema ||= Schema.wrap(super, api)
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
end
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Jsapi
|
|
4
|
-
module
|
|
4
|
+
module Definition
|
|
5
5
|
module Schema
|
|
6
6
|
class Array < Base
|
|
7
7
|
class Wrapper < Schema::Wrapper
|
|
8
8
|
def items
|
|
9
|
-
@items ||= Schema.wrap(super,
|
|
9
|
+
@items ||= Schema.wrap(super, api)
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
private
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Jsapi
|
|
4
|
-
module
|
|
4
|
+
module Definition
|
|
5
5
|
module Schema
|
|
6
6
|
class Object < Base
|
|
7
7
|
class Wrapper < Schema::Wrapper
|
|
@@ -33,12 +33,12 @@ module Jsapi
|
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
def additional_properties
|
|
36
|
-
AdditionalProperties.wrap(super,
|
|
36
|
+
AdditionalProperties.wrap(super, api)
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
def resolve_properties(context: nil)
|
|
40
|
-
super(
|
|
41
|
-
Property.wrap(property,
|
|
40
|
+
super(api, context: context).transform_values do |property|
|
|
41
|
+
Property.wrap(property, api)
|
|
42
42
|
end
|
|
43
43
|
end
|
|
44
44
|
|
|
@@ -52,7 +52,7 @@ module Jsapi
|
|
|
52
52
|
|
|
53
53
|
discriminating_property = properties[discriminator.property_name]
|
|
54
54
|
if discriminating_property.nil?
|
|
55
|
-
raise Messages.invalid_value(
|
|
55
|
+
raise Support::Messages.invalid_value(
|
|
56
56
|
name: 'discriminator property',
|
|
57
57
|
value: discriminator.property_name,
|
|
58
58
|
valid_values: properties.keys
|
|
@@ -70,10 +70,10 @@ module Jsapi
|
|
|
70
70
|
|
|
71
71
|
schema_name = discriminator.mapping(discriminating_value) || discriminating_value
|
|
72
72
|
|
|
73
|
-
schema =
|
|
73
|
+
schema = api.find_schema(schema_name)
|
|
74
74
|
if schema.nil?
|
|
75
75
|
default_mapping = discriminator.default_mapping
|
|
76
|
-
schema =
|
|
76
|
+
schema = api.find_schema(default_mapping) unless default_mapping.nil?
|
|
77
77
|
|
|
78
78
|
if schema.nil?
|
|
79
79
|
raise "inheriting schema couldn't be found: " \
|
|
@@ -82,7 +82,7 @@ module Jsapi
|
|
|
82
82
|
end
|
|
83
83
|
|
|
84
84
|
Wrapper
|
|
85
|
-
.new(schema.resolve(
|
|
85
|
+
.new(schema.resolve(api), api)
|
|
86
86
|
.resolve_schema(object, context: context)
|
|
87
87
|
end
|
|
88
88
|
|
|
@@ -168,8 +168,8 @@ module Jsapi
|
|
|
168
168
|
end
|
|
169
169
|
end
|
|
170
170
|
|
|
171
|
-
def resolve_properties(
|
|
172
|
-
properties = merge_properties(
|
|
171
|
+
def resolve_properties(api, context: nil)
|
|
172
|
+
properties = merge_properties(api, [])
|
|
173
173
|
|
|
174
174
|
case context
|
|
175
175
|
when :response
|
|
@@ -206,15 +206,15 @@ module Jsapi
|
|
|
206
206
|
|
|
207
207
|
protected
|
|
208
208
|
|
|
209
|
-
def merge_properties(
|
|
209
|
+
def merge_properties(api, path)
|
|
210
210
|
return properties unless all_of_references.present?
|
|
211
211
|
|
|
212
212
|
{}.tap do |properties|
|
|
213
213
|
all_of_references.each do |reference|
|
|
214
|
-
schema = reference.resolve(
|
|
214
|
+
schema = reference.resolve(api)
|
|
215
215
|
raise "circular reference: #{reference.ref}" if schema.in?(path)
|
|
216
216
|
|
|
217
|
-
properties.merge!(schema.merge_properties(
|
|
217
|
+
properties.merge!(schema.merge_properties(api, path + [self]))
|
|
218
218
|
end
|
|
219
219
|
properties.merge!(self.properties)
|
|
220
220
|
end
|
|
@@ -1,18 +1,32 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Jsapi
|
|
4
|
-
module
|
|
4
|
+
module Definition
|
|
5
5
|
module Schema
|
|
6
|
+
# Raised when jsonifying an object fails.
|
|
7
|
+
class JsonifyError < RuntimeError
|
|
8
|
+
attr_reader :path # :nodoc:
|
|
9
|
+
|
|
10
|
+
def message
|
|
11
|
+
[@path&.delete_prefix('.'), super].compact.join(' ')
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def prepend(origin) # :nodoc:
|
|
15
|
+
@path = "#{origin}#{@path}"
|
|
16
|
+
self
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
6
20
|
class Wrapper < Model::Wrapper
|
|
7
21
|
# The level of existence.
|
|
8
22
|
attr_reader :existence
|
|
9
23
|
|
|
10
|
-
def initialize(schema,
|
|
24
|
+
def initialize(schema, api)
|
|
11
25
|
@existence =
|
|
12
26
|
[schema.existence].tap do |levels|
|
|
13
27
|
s = schema
|
|
14
28
|
while s.is_a?(Reference)
|
|
15
|
-
s = s.resolve(
|
|
29
|
+
s = s.resolve(api, deep: false)
|
|
16
30
|
levels << s.existence
|
|
17
31
|
end
|
|
18
32
|
end.compact.max || Existence::ALLOW_OMITTED
|
|
@@ -23,7 +37,7 @@ module Jsapi
|
|
|
23
37
|
def default_value(context: nil)
|
|
24
38
|
return default unless default.nil?
|
|
25
39
|
|
|
26
|
-
|
|
40
|
+
api.default_value(type, context: context)
|
|
27
41
|
end
|
|
28
42
|
|
|
29
43
|
# Generates a JSON value representing +value+.
|
|
@@ -18,7 +18,7 @@ require_relative 'schema/object'
|
|
|
18
18
|
require_relative 'schema/string'
|
|
19
19
|
|
|
20
20
|
module Jsapi
|
|
21
|
-
module
|
|
21
|
+
module Definition
|
|
22
22
|
module Schema
|
|
23
23
|
class << self
|
|
24
24
|
# Creates a new schema. The +:type+ keyword determines the type of the schema to be
|
|
@@ -52,7 +52,7 @@ module Jsapi
|
|
|
52
52
|
when 'string'
|
|
53
53
|
String
|
|
54
54
|
else
|
|
55
|
-
raise ArgumentError, Messages.invalid_value(
|
|
55
|
+
raise ArgumentError, Support::Messages.invalid_value(
|
|
56
56
|
name: 'type',
|
|
57
57
|
value: type,
|
|
58
58
|
valid_values: TYPES
|
|
@@ -61,13 +61,13 @@ module Jsapi
|
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
# Wraps +schema+.
|
|
64
|
-
def wrap(schema,
|
|
64
|
+
def wrap(schema, api)
|
|
65
65
|
return if schema.nil?
|
|
66
66
|
return schema if schema.is_a?(Wrapper)
|
|
67
67
|
|
|
68
|
-
"#{schema.resolve(
|
|
68
|
+
"#{schema.resolve(api).class.name}::Wrapper"
|
|
69
69
|
.constantize
|
|
70
|
-
.new(schema,
|
|
70
|
+
.new(schema, api)
|
|
71
71
|
end
|
|
72
72
|
end
|
|
73
73
|
end
|