microsoft_kiota_serialization_json 0.24.0 → 0.25.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
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7ddf6f99fb31acc71c42cea0e6b087efa575634c9232600c6b568229697c9389
|
|
4
|
+
data.tar.gz: 51d9e9f60534287d141f2922211a943649e7cb6b150aa224665b85e975a38f66
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c767f85a36ccd8a650dabd9daa4d698226e01a44b95ad36a1e1b1c84899c9b856751d91e0111f722f12549e6dd26b29ff7982f533fcea056d349786c36a1bfdc
|
|
7
|
+
data.tar.gz: 852474c98de9e0ab50d955565768e5ac55807d841dc079e4113efbe1b98a4af0514eea3af3936c63312b622c5464d3de7bde0f1aa8426e5bc2ac61672a910830
|
|
@@ -55,6 +55,10 @@ module MicrosoftKiotaSerializationJson
|
|
|
55
55
|
MicrosoftKiotaAbstractions::ISODuration.new(@current_node) if @current_node.is_a?(String)
|
|
56
56
|
end
|
|
57
57
|
|
|
58
|
+
def get_byte_array_value
|
|
59
|
+
@current_node.unpack1('m') if @current_node.is_a?(String)
|
|
60
|
+
end
|
|
61
|
+
|
|
58
62
|
# The generator passes the type as a class, except for booleans which it passes as a plain
|
|
59
63
|
# string. A `case` cannot dispatch on that: `when String` asks whether the type is an instance
|
|
60
64
|
# of String, and a class is an instance of Class, so every branch fell through to the string
|
|
@@ -95,7 +99,7 @@ module MicrosoftKiotaSerializationJson
|
|
|
95
99
|
@current_node.map do |object|
|
|
96
100
|
next if object.nil?
|
|
97
101
|
|
|
98
|
-
current_parse_node =
|
|
102
|
+
current_parse_node = child_node(object)
|
|
99
103
|
current_parse_node.get_object_value(factory)
|
|
100
104
|
end
|
|
101
105
|
end
|
|
@@ -104,7 +108,12 @@ module MicrosoftKiotaSerializationJson
|
|
|
104
108
|
raise StandardError, 'Factory cannot be null' if factory.nil?
|
|
105
109
|
|
|
106
110
|
item = factory.call(self)
|
|
107
|
-
|
|
111
|
+
begin
|
|
112
|
+
on_before_assign_field_values&.call(item)
|
|
113
|
+
assign_field_values(item)
|
|
114
|
+
ensure
|
|
115
|
+
on_after_assign_field_values&.call(item)
|
|
116
|
+
end
|
|
108
117
|
item
|
|
109
118
|
rescue StandardError => e
|
|
110
119
|
raise e.class, 'Error during deserialization'
|
|
@@ -118,7 +127,7 @@ module MicrosoftKiotaSerializationJson
|
|
|
118
127
|
next if v.nil?
|
|
119
128
|
|
|
120
129
|
deserializer = fields[k]
|
|
121
|
-
next deserializer.call(
|
|
130
|
+
next deserializer.call(child_node(v)) if deserializer
|
|
122
131
|
|
|
123
132
|
additional_data = item.respond_to?(:additional_data) ? item.additional_data : nil
|
|
124
133
|
next if additional_data.nil?
|
|
@@ -158,7 +167,17 @@ module MicrosoftKiotaSerializationJson
|
|
|
158
167
|
return unless @current_node.is_a?(Hash)
|
|
159
168
|
|
|
160
169
|
raw_value = @current_node[name]
|
|
161
|
-
|
|
170
|
+
child_node(raw_value) if raw_value
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
private
|
|
174
|
+
|
|
175
|
+
# nested nodes keep the callbacks so nested models are tracked too
|
|
176
|
+
def child_node(value)
|
|
177
|
+
JsonParseNode.new(value).tap do |node|
|
|
178
|
+
node.on_before_assign_field_values = on_before_assign_field_values
|
|
179
|
+
node.on_after_assign_field_values = on_after_assign_field_values
|
|
180
|
+
end
|
|
162
181
|
end
|
|
163
182
|
end
|
|
164
183
|
end
|
|
@@ -102,6 +102,14 @@ module MicrosoftKiotaSerializationJson
|
|
|
102
102
|
@writer[key] = value.string
|
|
103
103
|
end
|
|
104
104
|
|
|
105
|
+
def write_byte_array_value(key, value)
|
|
106
|
+
raise StandardError, 'no key or value included in write_byte_array_value(key, value)' if key.nil? && value.nil?
|
|
107
|
+
return set_root_value([value].pack('m0')) if key.nil?
|
|
108
|
+
return if value.nil?
|
|
109
|
+
|
|
110
|
+
@writer[key] = [value].pack('m0')
|
|
111
|
+
end
|
|
112
|
+
|
|
105
113
|
def write_collection_of_primitive_values(key, values)
|
|
106
114
|
return unless values
|
|
107
115
|
return set_root_value(values.map { |v| serialized_scalar(v) }) unless key
|
|
@@ -113,7 +121,7 @@ module MicrosoftKiotaSerializationJson
|
|
|
113
121
|
|
|
114
122
|
def write_collection_of_object_values(key, values)
|
|
115
123
|
return unless values
|
|
116
|
-
return values.map { |v|
|
|
124
|
+
return set_root_value(values.map { |v| object_value_hash(v) }) unless key
|
|
117
125
|
|
|
118
126
|
@writer[key] = values.map { |v| object_value_hash(v) }
|
|
119
127
|
end
|
|
@@ -125,10 +133,16 @@ module MicrosoftKiotaSerializationJson
|
|
|
125
133
|
if key
|
|
126
134
|
@writer[key] = object_value_hash(*values)
|
|
127
135
|
else
|
|
128
|
-
values.each { |v| v
|
|
136
|
+
values.each { |v| serialize_object(v, self) }
|
|
129
137
|
end
|
|
130
138
|
end
|
|
131
139
|
|
|
140
|
+
def write_null_value(key)
|
|
141
|
+
return set_root_value(nil) if key.nil?
|
|
142
|
+
|
|
143
|
+
@writer[key] = nil
|
|
144
|
+
end
|
|
145
|
+
|
|
132
146
|
def write_collection_of_enum_values(key, values)
|
|
133
147
|
return unless values
|
|
134
148
|
|
|
@@ -160,12 +174,30 @@ module MicrosoftKiotaSerializationJson
|
|
|
160
174
|
private
|
|
161
175
|
|
|
162
176
|
def object_value_hash(value, *additional_values_to_merge)
|
|
163
|
-
temp =
|
|
164
|
-
value
|
|
165
|
-
additional_values_to_merge.each { |v| v
|
|
177
|
+
temp = child_writer
|
|
178
|
+
serialize_object(value, temp)
|
|
179
|
+
additional_values_to_merge.each { |v| serialize_object(v, temp) unless v.nil? }
|
|
166
180
|
temp.writer
|
|
167
181
|
end
|
|
168
182
|
|
|
183
|
+
# the after hook runs even when writing the model raised, so callbacks can restore their state
|
|
184
|
+
def serialize_object(value, writer)
|
|
185
|
+
on_before_object_serialization&.call(value)
|
|
186
|
+
on_start_object_serialization&.call(value, writer)
|
|
187
|
+
value.serialize(writer)
|
|
188
|
+
ensure
|
|
189
|
+
on_after_object_serialization&.call(value)
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
# nested writers keep the callbacks so nested models write only their changes too
|
|
193
|
+
def child_writer
|
|
194
|
+
JsonSerializationWriter.new.tap do |writer|
|
|
195
|
+
writer.on_before_object_serialization = on_before_object_serialization
|
|
196
|
+
writer.on_after_object_serialization = on_after_object_serialization
|
|
197
|
+
writer.on_start_object_serialization = on_start_object_serialization
|
|
198
|
+
end
|
|
199
|
+
end
|
|
200
|
+
|
|
169
201
|
public
|
|
170
202
|
|
|
171
203
|
def serialized_scalar(value)
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: microsoft_kiota_serialization_json
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.25.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Microsoft Corporation
|
|
@@ -35,14 +35,14 @@ dependencies:
|
|
|
35
35
|
requirements:
|
|
36
36
|
- - '='
|
|
37
37
|
- !ruby/object:Gem::Version
|
|
38
|
-
version: 0.
|
|
38
|
+
version: 0.25.0
|
|
39
39
|
type: :runtime
|
|
40
40
|
prerelease: false
|
|
41
41
|
version_requirements: !ruby/object:Gem::Requirement
|
|
42
42
|
requirements:
|
|
43
43
|
- - '='
|
|
44
44
|
- !ruby/object:Gem::Version
|
|
45
|
-
version: 0.
|
|
45
|
+
version: 0.25.0
|
|
46
46
|
- !ruby/object:Gem::Dependency
|
|
47
47
|
name: uuidtools
|
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|