Skip to content

Commit 4fe6030

Browse files
committed
fix: Add write operations to JSON converters to allow reserialization of model
1 parent bd18b08 commit 4fe6030

File tree

8 files changed

+110
-7
lines changed

8 files changed

+110
-7
lines changed

apps/HyperGuestSDK.ConsoleSample/Program.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
using HyperGuestSDK;
99
using HyperGuestSDK.Api;
10+
using System.Text.Json;
1011

1112
var settings = GetSettings();
1213
var http = CreateHttpClient();
@@ -16,6 +17,8 @@
1617
//Console.WriteLine($"Found {properties.Data.Length} properties.");
1718

1819
var property = await api.Properties.GetPropertyDetailsAsync(19912);
20+
21+
var json = JsonSerializer.Serialize(property.Data);
1922
Console.WriteLine($"Property: {property.Data.Name}");
2023

2124
HyperGuestSettings GetSettings()

libs/HyperGuestSDK/Api/Properties/PropertyDetail.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,12 @@ public class PropertyDetail : Model<PropertyDetail>
103103
[JsonPropertyName("name")]
104104
public string Name { get; set; } = default!;
105105

106+
/// <summary>
107+
/// Gets or sets the set of rate plans.
108+
/// </summary>
109+
[JsonPropertyName("ratePlans")]
110+
public RatePlan?[]? RatePlans { get; set; }
111+
106112
/// <summary>
107113
/// Gets or sets the rooms.
108114
/// </summary>

libs/HyperGuestSDK/Primitives/AttributeGroup.cs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,5 +96,27 @@ public class AttributeItemsTypeConverter : JsonConverter<AttributeItems>
9696
}
9797

9898
public override void Write(Utf8JsonWriter writer, AttributeItems value, JsonSerializerOptions options)
99-
=> throw new NotSupportedException();
99+
{
100+
if (value.IsMap)
101+
{
102+
writer.WriteStartArray();
103+
foreach (var item in value.EnumerateMap())
104+
{
105+
writer.WriteStartObject();
106+
writer.WriteString("key", item.Key);
107+
writer.WriteString("value", item.Value);
108+
writer.WriteEndObject();
109+
}
110+
writer.WriteEndArray();
111+
}
112+
else
113+
{
114+
writer.WriteStartArray();
115+
foreach (var item in value.Enumerate())
116+
{
117+
writer.WriteStringValue(item);
118+
}
119+
writer.WriteEndArray();
120+
}
121+
}
100122
}

libs/HyperGuestSDK/Primitives/BitJsonConverter.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,7 @@ public override bool Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSer
1616
}
1717

1818
public override void Write(Utf8JsonWriter writer, bool value, JsonSerializerOptions options)
19-
=> throw new NotSupportedException();
19+
{
20+
writer.WriteNumberValue(value ? 1 : 0);
21+
}
2022
}

libs/HyperGuestSDK/Primitives/DateTimeJsonConverter.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,7 @@ public class DateTimeJsonConverter() : JsonConverter<DateTime?>
2323
}
2424

2525
public override void Write(Utf8JsonWriter writer, DateTime? value, JsonSerializerOptions options)
26-
=> throw new NotSupportedException();
26+
{
27+
writer.WriteStringValue(value?.ToString(_format));
28+
}
2729
}

libs/HyperGuestSDK/Primitives/NullableDecimalJsonConverter.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,14 @@ public class NullableDecimalJsonConverter : JsonConverter<decimal?>
3131
}
3232

3333
public override void Write(Utf8JsonWriter writer, decimal? value, JsonSerializerOptions options)
34-
=> throw new NotSupportedException();
34+
{
35+
if (value.HasValue)
36+
{
37+
writer.WriteNumberValue(value.Value);
38+
}
39+
else
40+
{
41+
writer.WriteNullValue();
42+
}
43+
}
3544
}

libs/HyperGuestSDK/Primitives/Policy.cs

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,32 @@ public class PolicyConditionJsonConverter : JsonConverter<PolicyCondition[]?>
241241
}
242242

243243
public override void Write(Utf8JsonWriter writer, PolicyCondition[]? value, JsonSerializerOptions options)
244-
=> throw new NotSupportedException();
244+
{
245+
if (value is { Length: > 0 })
246+
{
247+
writer.WriteStartArray();
248+
249+
for (int i = 0; i < value.Length; i++)
250+
{
251+
var item = value[i];
252+
if (value is null)
253+
{
254+
writer.WriteNullValue();
255+
}
256+
else
257+
{
258+
JsonSerializer.Serialize(writer, item, options);
259+
}
260+
}
261+
262+
writer.WriteEndArray();
263+
264+
}
265+
else
266+
{
267+
writer.WriteNullValue();
268+
}
269+
}
245270
}
246271

247272
public class PolicyResultJsonConverter : JsonConverter<PolicyResult[]?>
@@ -265,5 +290,30 @@ public class PolicyResultJsonConverter : JsonConverter<PolicyResult[]?>
265290
}
266291

267292
public override void Write(Utf8JsonWriter writer, PolicyResult[]? value, JsonSerializerOptions options)
268-
=> throw new NotSupportedException();
293+
{
294+
if (value is { Length: > 0 })
295+
{
296+
writer.WriteStartArray();
297+
298+
for (int i = 0; i < value.Length; i++)
299+
{
300+
var item = value[i];
301+
if (value is null)
302+
{
303+
writer.WriteNullValue();
304+
}
305+
else
306+
{
307+
JsonSerializer.Serialize(writer, item, options);
308+
}
309+
}
310+
311+
writer.WriteEndArray();
312+
313+
}
314+
else
315+
{
316+
writer.WriteNullValue();
317+
}
318+
}
269319
}

libs/HyperGuestSDK/Primitives/TimeSpanJsonConverter.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,14 @@ public class TimeSpanJsonConverter() : JsonConverter<TimeSpan?>
2323
}
2424

2525
public override void Write(Utf8JsonWriter writer, TimeSpan? value, JsonSerializerOptions options)
26-
=> throw new NotSupportedException();
26+
{
27+
if (value.HasValue)
28+
{
29+
writer.WriteStringValue(value.Value.ToString(_format));
30+
}
31+
else
32+
{
33+
writer.WriteNullValue();
34+
}
35+
}
2736
}

0 commit comments

Comments
 (0)