apimatic_core 0.2.2 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +29 -16
- data/lib/apimatic-core/api_call.rb +0 -1
- data/lib/apimatic-core/configurations/global_configuration.rb +0 -14
- data/lib/apimatic-core/exceptions/any_of_validation_exception.rb +13 -0
- data/lib/apimatic-core/exceptions/one_of_validation_exception.rb +13 -0
- data/lib/apimatic-core/request_builder.rb +0 -26
- data/lib/apimatic-core/response_handler.rb +4 -19
- data/lib/apimatic-core/types/parameter.rb +11 -22
- data/lib/apimatic-core/types/union_types/any_of.rb +90 -0
- data/lib/apimatic-core/types/union_types/leaf_type.rb +298 -0
- data/lib/apimatic-core/types/union_types/one_of.rb +90 -0
- data/lib/apimatic-core/types/union_types/union_type_context.rb +30 -0
- data/lib/apimatic-core/utilities/api_helper.rb +60 -156
- data/lib/apimatic-core/utilities/date_time_helper.rb +54 -7
- data/lib/apimatic-core/utilities/union_type_helper.rb +298 -0
- data/lib/apimatic_core.rb +8 -0
- metadata +12 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c05d9bcfc3de9b4a1b64bef3e97ddc26be097d03a46c921526a7a0a0ab4ad083
|
4
|
+
data.tar.gz: aa0f7ae505663bc00d919cf4c8a9a661ce0ba2703cfa0aa1a82697aea5913472
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fcfbdbab3adcf1d8c5463a2402e2cfa3253554a72ff4ddfe5625ababf23ff980ac4efb175d6959176bec6bf181f8554ae539181b7c8060c088ceff94c17ec1c7
|
7
|
+
data.tar.gz: 3a22ad6f9424b9a227020fc03f00a0b3d6537a7d3d11d2823d025fc0a4de8eb1b056c9e68af9b312f5809ff4ef6b7997d9921763befada28135962422e2a53f1
|
data/README.md
CHANGED
@@ -12,7 +12,7 @@ Core library ruby does the job of congregating common and core functionality fro
|
|
12
12
|
|
13
13
|
|
14
14
|
## Installation
|
15
|
-
You will need `2.6 <= Ruby version
|
15
|
+
You will need `2.6 <= Ruby version <= 3.2` to support this package.
|
16
16
|
|
17
17
|
Installation is quite simple, just execute the following command:
|
18
18
|
```
|
@@ -48,6 +48,14 @@ gem 'apimatic_core'
|
|
48
48
|
|------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------|
|
49
49
|
| [`GlobalConfiguration`](lib/apimatic-core/configurations/global_configuration.rb ) | Class holding the global configuration properties to make a successful API Call |
|
50
50
|
|
51
|
+
|
52
|
+
## Exceptions
|
53
|
+
| Name | Description |
|
54
|
+
|-------------------------------------------------------------------------------------------|-----------------------------------------------------|
|
55
|
+
| [`OneOfValidationException`](lib/apimatic-core/exceptions/one_of_validation_exception.rb) | Exception thrown in case of OneOf validation errors |
|
56
|
+
| [`AnyOfValidationException`](lib/apimatic-core/exceptions/any_of_validation_exception.rb) | Exception thrown in case of AnyOf validation errors |
|
57
|
+
|
58
|
+
|
51
59
|
## Factories
|
52
60
|
| Name | Description |
|
53
61
|
|-------------------------------------------------------------------------------|------------------------------------------|
|
@@ -67,23 +75,28 @@ gem 'apimatic_core'
|
|
67
75
|
| [`EndpointLogger`](lib/apimatic-core/logger/endpoint_logger.rb) | A class to provide logging for an API call |
|
68
76
|
|
69
77
|
## Types
|
70
|
-
| Name
|
71
|
-
|
72
|
-
| [`ApiException`](lib/apimatic-core/types/sdk/api_exception.rb)
|
73
|
-
| [`
|
74
|
-
| [`
|
75
|
-
| [`
|
76
|
-
| [`
|
77
|
-
| [`
|
78
|
+
| Name | Description |
|
79
|
+
|---------------------------------------------------------------------------------|-------------------------------------------------------------------------------|
|
80
|
+
| [`ApiException`](lib/apimatic-core/types/sdk/api_exception.rb) | Basic exception type for the SDK |
|
81
|
+
| [`AnyOf`](lib/apimatic-core/types/union_types/any_of.rb) | Represents the AnyOf union type |
|
82
|
+
| [`OneOf`](lib/apimatic-core/types/union_types/one_of.rb) | Represents the OneOf union type |
|
83
|
+
| [`LeafType`](lib/apimatic-core/types/union_types/leaf_type.rb) | Represents the LeafOf union type |
|
84
|
+
| [`UnionTypeContext`](lib/apimatic-core/types/union_types/union_type_context.rb) | Represents the context for a UnionType |
|
85
|
+
| [`ValidationException`](lib/apimatic-core/types/sdk/validation_exception.rb) | Exception thrown in case of validation error or failure |
|
86
|
+
| [`ErrorCase`](lib/apimatic-core/types/error_case.rb) | A class to represent Exception types |
|
87
|
+
| [`FileWrapper`](lib/apimatic-core/types/sdk/file_wrapper.rb) | A wrapper to allow passing in content type for file uploads |
|
88
|
+
| [`Parameter`](lib/apimatic-core/types/parameter.rb) | A class to represent information about a Parameter passed in an endpoint |
|
89
|
+
| [`XmlAttributes`](lib/apimatic-core/types/xml_attributes.rb) | A class to represent information about an XML Parameter passed in an endpoint |
|
78
90
|
|
79
91
|
## Utilities
|
80
|
-
| Name | Description
|
81
|
-
|
82
|
-
| [`ApiHelper`](lib/apimatic-core/utilities/api_helper.rb) | A Helper Class with various functions associated with making an API Call
|
83
|
-
| [`AuthHelper`](lib/apimatic-core/utilities/auth_helper.rb) | A Helper Class with various functions associated with authentication in API Calls
|
84
|
-
| [`
|
85
|
-
| [`
|
86
|
-
| [`
|
92
|
+
| Name | Description |
|
93
|
+
|------------------------------------------------------------------------|---------------------------------------------------------------------------------------|
|
94
|
+
| [`ApiHelper`](lib/apimatic-core/utilities/api_helper.rb) | A Helper Class with various functions associated with making an API Call |
|
95
|
+
| [`AuthHelper`](lib/apimatic-core/utilities/auth_helper.rb) | A Helper Class with various functions associated with authentication in API Calls |
|
96
|
+
| [`UnionTypeHelper`](lib/apimatic-core/utilities/union_type_helper.rb) | A Helper Class with various functions associated with Union type in API Calls |
|
97
|
+
| [`ComparisonHelper`](lib/apimatic-core/utilities/comparison_helper.rb) | A Helper Class used for the comparison of expected and actual API response |
|
98
|
+
| [`FileHelper`](lib/apimatic-core/utilities/file_helper.rb) | A Helper Class for files |
|
99
|
+
| [`XmlHelper`](lib/apimatic-core/utilities/xml_helper.rb ) | A Helper class that holds utility methods for xml serialization and deserialization. |
|
87
100
|
|
88
101
|
## Links
|
89
102
|
* [apimatic_core_interfaces](https://rubygems.org/gems/apimatic_core_interfaces)
|
@@ -86,7 +86,6 @@ module CoreLibrary
|
|
86
86
|
_deserialized_response = @response_handler.endpoint_logger(@endpoint_logger)
|
87
87
|
.endpoint_name_for_logging(@endpoint_name_for_logging)
|
88
88
|
.handle(_http_response, @global_configuration.get_global_errors,
|
89
|
-
@global_configuration.get_sdk_module,
|
90
89
|
@global_configuration.should_symbolize_hash)
|
91
90
|
_deserialized_response
|
92
91
|
rescue StandardError => e
|
@@ -12,7 +12,6 @@ module CoreLibrary
|
|
12
12
|
@additional_headers = {}
|
13
13
|
@auth_managers = {}
|
14
14
|
@base_uri_executor = nil
|
15
|
-
@sdk_module = nil
|
16
15
|
@symbolize_hash = false
|
17
16
|
end
|
18
17
|
|
@@ -30,19 +29,6 @@ module CoreLibrary
|
|
30
29
|
@global_errors
|
31
30
|
end
|
32
31
|
|
33
|
-
# Sets the current SDK module core library is being used for.
|
34
|
-
# @return [GlobalConfiguration] Current Instance.
|
35
|
-
def sdk_module(sdk_module)
|
36
|
-
@sdk_module = sdk_module
|
37
|
-
self
|
38
|
-
end
|
39
|
-
|
40
|
-
# Getter for the current SDK module the core library is being used for.
|
41
|
-
# @return [Module] Current SDK module.
|
42
|
-
def get_sdk_module
|
43
|
-
@sdk_module
|
44
|
-
end
|
45
|
-
|
46
32
|
# The setter for the global headers to be attached with all requests.
|
47
33
|
# @param [Hash] global_headers The hash of global headers.
|
48
34
|
# @return [GlobalConfiguration] An updated instance of GlobalConfiguration.
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module CoreLibrary
|
2
|
+
# Custom exception class for AnyOfValidation
|
3
|
+
class AnyOfValidationException < StandardError
|
4
|
+
attr_reader :message
|
5
|
+
|
6
|
+
# Initializes a new instance of AnyOfValidationException with the specified message.
|
7
|
+
# @param [String] message The error message.
|
8
|
+
def initialize(message)
|
9
|
+
@message = message
|
10
|
+
super(message)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module CoreLibrary
|
2
|
+
# Custom exception class for OneOfValidation
|
3
|
+
class OneOfValidationException < StandardError
|
4
|
+
attr_reader :message
|
5
|
+
|
6
|
+
# Initializes a new instance of OneOfValidationException with the specified message.
|
7
|
+
# @param [String] message The error message.
|
8
|
+
def initialize(message)
|
9
|
+
@message = message
|
10
|
+
super(message)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -14,14 +14,12 @@ module CoreLibrary
|
|
14
14
|
@additional_query_params = {}
|
15
15
|
@multipart_params = {}
|
16
16
|
@body_param = nil
|
17
|
-
@should_wrap_body_param = nil
|
18
17
|
@body_serializer = nil
|
19
18
|
@auth = nil
|
20
19
|
@array_serialization_format = ArraySerializationFormat::INDEXED
|
21
20
|
@xml_attributes = nil
|
22
21
|
@endpoint_name_for_logging = nil
|
23
22
|
@endpoint_logger = nil
|
24
|
-
@template_validation_array = []
|
25
23
|
end
|
26
24
|
|
27
25
|
# The setter for the server.
|
@@ -53,7 +51,6 @@ module CoreLibrary
|
|
53
51
|
# @return [RequestBuilder] An updated instance of RequestBuilder.
|
54
52
|
def template_param(template_param)
|
55
53
|
template_param.validate
|
56
|
-
conditional_add_to_template_validation_array(template_param)
|
57
54
|
@template_params[template_param.get_key] = { 'value' => template_param.get_value,
|
58
55
|
'encode' => template_param.need_to_encode }
|
59
56
|
self
|
@@ -64,7 +61,6 @@ module CoreLibrary
|
|
64
61
|
# @return [RequestBuilder] An updated instance of RequestBuilder.
|
65
62
|
def header_param(header_param)
|
66
63
|
header_param.validate
|
67
|
-
conditional_add_to_template_validation_array(header_param)
|
68
64
|
@header_params[header_param.get_key] = header_param.get_value
|
69
65
|
self
|
70
66
|
end
|
@@ -74,7 +70,6 @@ module CoreLibrary
|
|
74
70
|
# @return [RequestBuilder] An updated instance of RequestBuilder.
|
75
71
|
def query_param(query_param)
|
76
72
|
query_param.validate
|
77
|
-
conditional_add_to_template_validation_array(query_param)
|
78
73
|
@query_params[query_param.get_key] = query_param.get_value
|
79
74
|
self
|
80
75
|
end
|
@@ -84,7 +79,6 @@ module CoreLibrary
|
|
84
79
|
# @return [RequestBuilder] An updated instance of RequestBuilder.
|
85
80
|
def form_param(form_param)
|
86
81
|
form_param.validate
|
87
|
-
conditional_add_to_template_validation_array(form_param)
|
88
82
|
@form_params[form_param.get_key] = form_param.get_value
|
89
83
|
self
|
90
84
|
end
|
@@ -110,7 +104,6 @@ module CoreLibrary
|
|
110
104
|
# @return [RequestBuilder] An updated instance of RequestBuilder.
|
111
105
|
def multipart_param(multipart_param)
|
112
106
|
multipart_param.validate
|
113
|
-
conditional_add_to_template_validation_array(multipart_param)
|
114
107
|
@multipart_params[multipart_param.get_key] = get_part(multipart_param)
|
115
108
|
self
|
116
109
|
end
|
@@ -120,7 +113,6 @@ module CoreLibrary
|
|
120
113
|
# @return [RequestBuilder] An updated instance of RequestBuilder.
|
121
114
|
def body_param(body_param)
|
122
115
|
body_param.validate
|
123
|
-
conditional_add_to_template_validation_array(body_param)
|
124
116
|
if !body_param.get_key.nil?
|
125
117
|
@body_param = {} if @body_param.nil?
|
126
118
|
@body_param[body_param.get_key] = body_param.get_value
|
@@ -184,28 +176,10 @@ module CoreLibrary
|
|
184
176
|
self
|
185
177
|
end
|
186
178
|
|
187
|
-
# Add param to the template validation array, in case a template is provided.
|
188
|
-
def conditional_add_to_template_validation_array(parameter)
|
189
|
-
return if parameter.get_template.nil?
|
190
|
-
|
191
|
-
@template_validation_array.push(parameter)
|
192
|
-
end
|
193
|
-
|
194
|
-
# Validates the template for the params provided with a template.
|
195
|
-
def validate_templates
|
196
|
-
return if @template_validation_array.nil? || @template_validation_array.empty?
|
197
|
-
|
198
|
-
@template_validation_array.each do |parameter|
|
199
|
-
parameter.validate_template(@global_configuration.get_sdk_module,
|
200
|
-
@global_configuration.should_symbolize_hash)
|
201
|
-
end
|
202
|
-
end
|
203
|
-
|
204
179
|
# Builds the Http Request.
|
205
180
|
# @param [Hash] endpoint_context The endpoint configuration to be used while executing the request.
|
206
181
|
# @return [HttpRequest] An instance of HttpRequest.
|
207
182
|
def build(endpoint_context)
|
208
|
-
validate_templates
|
209
183
|
_url = process_url
|
210
184
|
_request_body = process_body
|
211
185
|
_request_headers = process_headers(@global_configuration)
|
@@ -18,7 +18,6 @@ module CoreLibrary
|
|
18
18
|
@is_date_response = false
|
19
19
|
@is_response_array = false
|
20
20
|
@is_response_void = false
|
21
|
-
@type_group = nil
|
22
21
|
end
|
23
22
|
|
24
23
|
# Sets deserializer for the response.
|
@@ -159,22 +158,12 @@ module CoreLibrary
|
|
159
158
|
end
|
160
159
|
# rubocop:enable Naming/PredicateName
|
161
160
|
|
162
|
-
# Sets type group for the response.
|
163
|
-
# @param [String] type_group The oneOf/anyOf type group template.
|
164
|
-
# @return [ResponseHandler] An updated instance of ResponseHandler.
|
165
|
-
def type_group(type_group)
|
166
|
-
@type_group = type_group
|
167
|
-
self
|
168
|
-
end
|
169
|
-
|
170
161
|
# Main method to handle the response with all the set properties.
|
171
162
|
# @param [HttpResponse] response The response received.
|
172
163
|
# @param [Hash] global_errors The global errors object.
|
173
|
-
# @param [Module] sdk_module The module of the SDK core library is being used for.
|
174
164
|
# @param [Boolean] should_symbolize_hash Flag to symbolize the hash during response deserialization.
|
175
165
|
# @return [Object] The deserialized response of the API Call.
|
176
|
-
|
177
|
-
def handle(response, global_errors, sdk_module, should_symbolize_hash = false)
|
166
|
+
def handle(response, global_errors, should_symbolize_hash = false)
|
178
167
|
@endpoint_logger.info("Validating response for #{@endpoint_name_for_logging}.")
|
179
168
|
|
180
169
|
# checking Nullify 404
|
@@ -189,7 +178,7 @@ module CoreLibrary
|
|
189
178
|
return if @is_response_void
|
190
179
|
|
191
180
|
# applying deserializer if configured
|
192
|
-
deserialized_value = apply_deserializer(response,
|
181
|
+
deserialized_value = apply_deserializer(response, should_symbolize_hash)
|
193
182
|
|
194
183
|
# applying api_response if configured
|
195
184
|
deserialized_value = apply_api_response(response, deserialized_value)
|
@@ -199,7 +188,6 @@ module CoreLibrary
|
|
199
188
|
|
200
189
|
deserialized_value
|
201
190
|
end
|
202
|
-
# rubocop:enable Style/OptionalBooleanParameter
|
203
191
|
|
204
192
|
# Validates the response provided and throws an error against the configured status code.
|
205
193
|
# @param [HttpResponse] response The received response.
|
@@ -224,15 +212,12 @@ module CoreLibrary
|
|
224
212
|
end
|
225
213
|
|
226
214
|
# Applies deserializer to the response.
|
227
|
-
# @param sdk_module Module of the SDK using the core library.
|
228
215
|
# @param [Boolean] should_symbolize_hash Flag to symbolize the hash during response deserialization.
|
229
|
-
def apply_deserializer(response,
|
216
|
+
def apply_deserializer(response, should_symbolize_hash)
|
230
217
|
return apply_xml_deserializer(response) if @is_xml_response
|
231
218
|
return response.raw_body if @deserializer.nil?
|
232
219
|
|
233
|
-
if
|
234
|
-
@deserializer.call(@type_group, response.raw_body, sdk_module, should_symbolize_hash)
|
235
|
-
elsif @datetime_format
|
220
|
+
if @datetime_format
|
236
221
|
@deserializer.call(response.raw_body, @datetime_format, @is_response_array, should_symbolize_hash)
|
237
222
|
elsif @is_date_response
|
238
223
|
@deserializer.call(response.raw_body, @is_response_array, should_symbolize_hash)
|
@@ -9,7 +9,7 @@ module CoreLibrary
|
|
9
9
|
@should_encode = false
|
10
10
|
@default_content_type = nil
|
11
11
|
@value_convertor = nil
|
12
|
-
@
|
12
|
+
@validator = nil
|
13
13
|
end
|
14
14
|
|
15
15
|
# The setter for the parameter key.
|
@@ -88,34 +88,23 @@ module CoreLibrary
|
|
88
88
|
@default_content_type
|
89
89
|
end
|
90
90
|
|
91
|
-
#
|
92
|
-
# @param [
|
93
|
-
# @return [Parameter] An updated instance of Parameter.
|
94
|
-
def
|
95
|
-
@
|
91
|
+
# Setter for the validator.
|
92
|
+
# @param validator [callable] The validator function to be set.
|
93
|
+
# @return [Parameter] An updated instance of the Parameter class.
|
94
|
+
def validator(validator)
|
95
|
+
@validator = validator
|
96
96
|
self
|
97
97
|
end
|
98
98
|
|
99
|
-
# Template getter in case a template is set.
|
100
|
-
# @return [Parameter] Returns template for the parameter.
|
101
|
-
def get_template
|
102
|
-
@template
|
103
|
-
end
|
104
|
-
|
105
99
|
# Validates the parameter value to be sent in the request.
|
106
|
-
# @raise [
|
100
|
+
# @raise [ArgumentError] If the parameter is required but the value is nil.
|
107
101
|
def validate
|
108
102
|
raise ArgumentError, "Required parameter #{@key} cannot be nil." if @is_required && @value.nil?
|
109
|
-
end
|
110
103
|
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
# rubocop:disable Style/OptionalBooleanParameter
|
116
|
-
def validate_template(sdk_module, should_symbolize_hash = false)
|
117
|
-
ApiHelper.validate_types(@value, @template, sdk_module, should_symbolize_hash) unless @value.nil?
|
104
|
+
return if @validator.nil?
|
105
|
+
|
106
|
+
validated_type = @validator.call(@value)
|
107
|
+
@value_convertor = proc { |value| validated_type.serialize(value) } if validated_type.is_valid
|
118
108
|
end
|
119
|
-
# rubocop:enable Style/OptionalBooleanParameter
|
120
109
|
end
|
121
110
|
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
module CoreLibrary
|
2
|
+
# Represents the AnyOf union type in the core library
|
3
|
+
class AnyOf < UnionType
|
4
|
+
# Initializes a new instance of AnyOf
|
5
|
+
# @param union_types [Array] The array of nested union types
|
6
|
+
# @param union_type_context [UnionTypeContext] The context for the union type
|
7
|
+
def initialize(union_types, union_type_context = UnionTypeContext.new)
|
8
|
+
super(union_types, union_type_context)
|
9
|
+
@collection_cases = nil
|
10
|
+
end
|
11
|
+
|
12
|
+
# Validates a value against the AnyOf union type
|
13
|
+
# @param value [Object] The value to validate
|
14
|
+
# @return [AnyOf] The validated AnyOf object
|
15
|
+
def validate(value)
|
16
|
+
context = @union_type_context
|
17
|
+
UnionTypeHelper.update_nested_flag_for_union_types(union_types)
|
18
|
+
is_optional_or_nullable = UnionTypeHelper.optional_or_nullable_case?(
|
19
|
+
context,
|
20
|
+
@union_types.map(&:union_type_context)
|
21
|
+
)
|
22
|
+
|
23
|
+
if value.nil? && is_optional_or_nullable
|
24
|
+
@is_valid = true
|
25
|
+
return self
|
26
|
+
end
|
27
|
+
|
28
|
+
if value.nil?
|
29
|
+
@is_valid = false
|
30
|
+
@error_messages = UnionTypeHelper.process_errors(value, @union_types, @error_messages,
|
31
|
+
union_type_context.is_nested, false)
|
32
|
+
end
|
33
|
+
|
34
|
+
validate_value_against_case(value, context)
|
35
|
+
|
36
|
+
unless @is_valid
|
37
|
+
@error_messages = UnionTypeHelper.process_errors(value, @union_types, @error_messages,
|
38
|
+
union_type_context.is_nested, false)
|
39
|
+
end
|
40
|
+
|
41
|
+
self
|
42
|
+
end
|
43
|
+
|
44
|
+
# Serializes a given value.
|
45
|
+
# @param value [Object] The value to be serialized.
|
46
|
+
# @return [Object, nil] The serialized representation of the value, or nil if the value is nil.
|
47
|
+
def serialize(value)
|
48
|
+
return nil if value.nil?
|
49
|
+
|
50
|
+
UnionTypeHelper.serialize_value(
|
51
|
+
value,
|
52
|
+
@union_type_context,
|
53
|
+
@collection_cases,
|
54
|
+
@union_types
|
55
|
+
)
|
56
|
+
end
|
57
|
+
|
58
|
+
# Deserializes a value based on the AnyOf union type
|
59
|
+
# @param value [Object] The value to deserialize
|
60
|
+
# @param should_symbolize [Boolean] Indicates whether the deserialized value should be symbolized.
|
61
|
+
# @return [Object, nil] The deserialized value, or nil if the input value is nil
|
62
|
+
def deserialize(value, should_symbolize: false)
|
63
|
+
return nil if value.nil?
|
64
|
+
|
65
|
+
UnionTypeHelper.deserialize_value(value, @union_type_context, @collection_cases,
|
66
|
+
@union_types, should_symbolize: should_symbolize)
|
67
|
+
end
|
68
|
+
|
69
|
+
private
|
70
|
+
|
71
|
+
# Validates a value against the appropriate case of the AnyOf union type
|
72
|
+
# @param value [Object] The value to validate
|
73
|
+
# @param context [UnionTypeContext] The context for the union type
|
74
|
+
def validate_value_against_case(value, context)
|
75
|
+
if context.is_array && context.is_dict && context.is_array_of_dict
|
76
|
+
@is_valid, @collection_cases = UnionTypeHelper.validate_array_of_dict_case(@union_types, value,
|
77
|
+
false)
|
78
|
+
elsif context.is_array && context.is_dict
|
79
|
+
@is_valid, @collection_cases = UnionTypeHelper.validate_dict_of_array_case(@union_types, value,
|
80
|
+
false)
|
81
|
+
elsif context.is_array
|
82
|
+
@is_valid, @collection_cases = UnionTypeHelper.validate_array_case(@union_types, value, false)
|
83
|
+
elsif context.is_dict
|
84
|
+
@is_valid, @collection_cases = UnionTypeHelper.validate_dict_case(@union_types, value, false)
|
85
|
+
else
|
86
|
+
@is_valid = UnionTypeHelper.get_matched_count(value, @union_types, false) >= 1
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|