microsoft_kiota_serialization_json 0.18.0 → 0.19.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: cb3c8ad046e7bb462b1a2b8142285f7524652c456ebf4d829d1405a5be5cc735
|
|
4
|
+
data.tar.gz: 2f4c604480b717b808521d309b4788d304ffc4e6f40de4c103478a1a5efc9ff4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c564b6ba4b03e7a9f6a6881b8db19d7ba53a991176020f5d6cc16271a3de1129cf44a00460749232745adcef17e8bc08828f51c8d8b63b7d5137bb83cb6f2294
|
|
7
|
+
data.tar.gz: 6b52a93a107d2e90dd93d7c03cc9dc03a23f7cbafeb97ce8154cb23cacb70806988462ab95bb0b9a88f6c01e597cc548748db5cbccb3b0adbb0ea5c073eb8806
|
|
@@ -14,20 +14,25 @@ module MicrosoftKiotaSerializationJson
|
|
|
14
14
|
@current_node = node
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
+
# The scalar readers answer only for the type they are named after and return nil otherwise,
|
|
18
|
+
# matching the dotnet and Python runtimes. Coercing instead would make every reader answer for
|
|
19
|
+
# every payload, which leaves a composed type unable to tell which member it holds.
|
|
17
20
|
def get_string_value
|
|
18
|
-
@current_node.
|
|
21
|
+
@current_node.is_a?(String) ? @current_node : nil
|
|
19
22
|
end
|
|
20
23
|
|
|
21
24
|
def get_boolean_value
|
|
22
|
-
@current_node
|
|
25
|
+
[true, false].include?(@current_node) ? @current_node : nil
|
|
23
26
|
end
|
|
24
27
|
|
|
25
28
|
def get_number_value
|
|
26
|
-
@current_node.
|
|
29
|
+
@current_node.is_a?(Integer) ? @current_node : nil
|
|
27
30
|
end
|
|
28
31
|
|
|
32
|
+
# Widened to Numeric because JSON writes a whole number without a fraction, so a float field can
|
|
33
|
+
# legitimately arrive as an Integer.
|
|
29
34
|
def get_float_value
|
|
30
|
-
@current_node.to_f
|
|
35
|
+
@current_node.is_a?(Numeric) ? @current_node.to_f : nil
|
|
31
36
|
end
|
|
32
37
|
|
|
33
38
|
def get_guid_value
|
|
@@ -50,35 +55,34 @@ module MicrosoftKiotaSerializationJson
|
|
|
50
55
|
MicrosoftKiotaAbstractions::ISODuration.new(@current_node)
|
|
51
56
|
end
|
|
52
57
|
|
|
58
|
+
# The generator passes the type as a class, except for booleans which it passes as a plain
|
|
59
|
+
# string. A `case` cannot dispatch on that: `when String` asks whether the type is an instance
|
|
60
|
+
# of String, and a class is an instance of Class, so every branch fell through to the string
|
|
61
|
+
# reader. A hash keys on the class object itself.
|
|
62
|
+
PRIMITIVE_READERS = {
|
|
63
|
+
String => :get_string_value,
|
|
64
|
+
Float => :get_float_value,
|
|
65
|
+
Integer => :get_number_value,
|
|
66
|
+
Date => :get_date_value,
|
|
67
|
+
DateTime => :get_date_time_value,
|
|
68
|
+
Time => :get_time_value,
|
|
69
|
+
MicrosoftKiotaAbstractions::ISODuration => :get_duration_value,
|
|
70
|
+
UUIDTools::UUID => :get_guid_value,
|
|
71
|
+
'boolean' => :get_boolean_value,
|
|
72
|
+
'Boolean' => :get_boolean_value
|
|
73
|
+
}.freeze
|
|
74
|
+
|
|
53
75
|
def get_collection_of_primitive_values(type)
|
|
76
|
+
reader = PRIMITIVE_READERS[type]
|
|
54
77
|
@current_node.map do |object|
|
|
55
78
|
next if object.nil?
|
|
79
|
+
# an untyped collection is generated as Object, which has no reader of its own; the parsed
|
|
80
|
+
# JSON scalar is already the value, so it passes through rather than being stringified
|
|
81
|
+
next object if reader.nil?
|
|
56
82
|
|
|
57
|
-
|
|
58
|
-
case type
|
|
59
|
-
when String
|
|
60
|
-
current_parse_node.get_string_value
|
|
61
|
-
when Float
|
|
62
|
-
current_parse_node.get_float_value
|
|
63
|
-
when Integer
|
|
64
|
-
current_parse_node.get_float_value
|
|
65
|
-
when 'Boolean'
|
|
66
|
-
current_parse_node.get_float_value
|
|
67
|
-
when DateTime
|
|
68
|
-
current_parse_node.get_date_time_value
|
|
69
|
-
when Time
|
|
70
|
-
current_parse_node.get_time_value
|
|
71
|
-
when Date
|
|
72
|
-
current_parse_node.get_date_value
|
|
73
|
-
when MicrosoftKiotaAbstractions::ISODuration
|
|
74
|
-
current_parse_node.get_duration_value
|
|
75
|
-
when UUIDTools::UUID
|
|
76
|
-
current_parse_node.get_guid_value
|
|
77
|
-
else
|
|
78
|
-
current_parse_node.get_string_value
|
|
79
|
-
end
|
|
83
|
+
JsonParseNode.new(object).public_send(reader)
|
|
80
84
|
rescue StandardError => e
|
|
81
|
-
raise e.class,
|
|
85
|
+
raise e.class, "Failed to fetch #{type} type: #{e.message}"
|
|
82
86
|
end
|
|
83
87
|
end
|
|
84
88
|
|
|
@@ -121,6 +125,8 @@ module MicrosoftKiotaSerializationJson
|
|
|
121
125
|
|
|
122
126
|
def get_enum_values(_type)
|
|
123
127
|
raw_values = get_string_value
|
|
128
|
+
return [] if raw_values.nil?
|
|
129
|
+
|
|
124
130
|
raw_values.split(',').map(&:strip)
|
|
125
131
|
end
|
|
126
132
|
|
|
@@ -12,34 +12,48 @@ module MicrosoftKiotaSerializationJson
|
|
|
12
12
|
|
|
13
13
|
def initialize
|
|
14
14
|
@writer = {}
|
|
15
|
+
@root_value = nil
|
|
16
|
+
@has_root_value = false
|
|
15
17
|
end
|
|
16
18
|
|
|
17
|
-
attr_reader :writer
|
|
19
|
+
attr_reader :writer, :root_value
|
|
20
|
+
|
|
21
|
+
# A composed type whose selected member is a primitive serializes the scalar as the whole
|
|
22
|
+
# document rather than as a member of an object, so a nil key means "this is the root".
|
|
23
|
+
def set_root_value(value)
|
|
24
|
+
@root_value = value
|
|
25
|
+
@has_root_value = true
|
|
26
|
+
value
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def root_value?
|
|
30
|
+
@has_root_value
|
|
31
|
+
end
|
|
18
32
|
|
|
19
33
|
def write_string_value(key, value)
|
|
20
|
-
raise StandardError, 'no key or value included in write_string_value(key, value)' if
|
|
21
|
-
return value
|
|
34
|
+
raise StandardError, 'no key or value included in write_string_value(key, value)' if key.nil? && value.nil?
|
|
35
|
+
return set_root_value(value) if key.nil?
|
|
22
36
|
|
|
23
|
-
@writer[key] =
|
|
37
|
+
@writer[key] = value
|
|
24
38
|
end
|
|
25
39
|
|
|
26
40
|
def write_boolean_value(key, value)
|
|
27
|
-
raise StandardError, 'no key or value included in write_boolean_value(key, value)' if
|
|
28
|
-
return value
|
|
41
|
+
raise StandardError, 'no key or value included in write_boolean_value(key, value)' if key.nil? && value.nil?
|
|
42
|
+
return set_root_value(value) if key.nil?
|
|
29
43
|
|
|
30
44
|
@writer[key] = value
|
|
31
45
|
end
|
|
32
46
|
|
|
33
47
|
def write_number_value(key, value)
|
|
34
|
-
raise StandardError, 'no key or value included in write_number_value(key, value)' if
|
|
35
|
-
return value
|
|
48
|
+
raise StandardError, 'no key or value included in write_number_value(key, value)' if key.nil? && value.nil?
|
|
49
|
+
return set_root_value(value) if key.nil?
|
|
36
50
|
|
|
37
51
|
@writer[key] = value
|
|
38
52
|
end
|
|
39
53
|
|
|
40
54
|
def write_float_value(key, value)
|
|
41
|
-
raise StandardError, 'no key or value included in write_float_value(key, value)' if
|
|
42
|
-
return value
|
|
55
|
+
raise StandardError, 'no key or value included in write_float_value(key, value)' if key.nil? && value.nil?
|
|
56
|
+
return set_root_value(value) if key.nil?
|
|
43
57
|
|
|
44
58
|
@writer[key] = value
|
|
45
59
|
end
|
|
@@ -99,13 +113,13 @@ module MicrosoftKiotaSerializationJson
|
|
|
99
113
|
end
|
|
100
114
|
|
|
101
115
|
def write_object_value(key, value, *additional_values_to_merge)
|
|
102
|
-
|
|
116
|
+
values = [value, *additional_values_to_merge].compact
|
|
117
|
+
return if values.empty?
|
|
103
118
|
|
|
104
119
|
if key
|
|
105
|
-
@writer[key] = object_value_hash(
|
|
120
|
+
@writer[key] = object_value_hash(*values)
|
|
106
121
|
else
|
|
107
|
-
|
|
108
|
-
additional_values_to_merge.each { |v| v&.serialize(self) }
|
|
122
|
+
values.each { |v| v.serialize(self) }
|
|
109
123
|
end
|
|
110
124
|
end
|
|
111
125
|
|
|
@@ -114,7 +128,7 @@ module MicrosoftKiotaSerializationJson
|
|
|
114
128
|
end
|
|
115
129
|
|
|
116
130
|
def get_serialized_content
|
|
117
|
-
@writer.to_json # TODO: encode to byte array to stay content type agnostic
|
|
131
|
+
(@has_root_value ? @root_value : @writer).to_json # TODO: encode to byte array to stay content type agnostic
|
|
118
132
|
end
|
|
119
133
|
|
|
120
134
|
def write_additional_data(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.19.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.19.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.19.0
|
|
46
46
|
- !ruby/object:Gem::Dependency
|
|
47
47
|
name: uuidtools
|
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|