diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 79f2f49..b166a3b 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @ffenix113 @xernobyl @yaziine +* @xernobyl @JimmyPettersson85 @itsmeadi diff --git a/src/Utils/StreamJsonConverter.cs b/src/Utils/StreamJsonConverter.cs index b99683a..0e2172a 100644 --- a/src/Utils/StreamJsonConverter.cs +++ b/src/Utils/StreamJsonConverter.cs @@ -13,6 +13,25 @@ public static class StreamJsonConverter NamingStrategy = new SnakeCaseNamingStrategy(), // this handles ForeignId => foreign_id etc. conversion for us }, NullValueHandling = NullValueHandling.Ignore, + DateTimeZoneHandling = DateTimeZoneHandling.Utc // always convert time to UTC + }; + + public static JsonSerializer Serializer { get; } = JsonSerializer.Create(Settings); + public static string SerializeObject(object obj) => JsonConvert.SerializeObject(obj, Settings); + public static T DeserializeObject(string json) => JsonConvert.DeserializeObject(json, Settings); + } + + public static class StreamJsonConverterUTC + { + private static JsonSerializerSettings Settings = new JsonSerializerSettings + { + DateFormatString = "yyyy-MM-dd'T'HH:mm:ssZ", + ContractResolver = new DefaultContractResolver + { + NamingStrategy = new SnakeCaseNamingStrategy(), // this handles ForeignId => foreign_id etc. conversion for us + }, + NullValueHandling = NullValueHandling.Ignore, + DateTimeZoneHandling = DateTimeZoneHandling.Utc // always convert time to UTC }; public static JsonSerializer Serializer { get; } = JsonSerializer.Create(Settings); diff --git a/tests/UtilsTests.cs b/tests/UtilsTests.cs index f23f455..cc1404d 100644 --- a/tests/UtilsTests.cs +++ b/tests/UtilsTests.cs @@ -51,5 +51,15 @@ public async Task TestActivityIdSameAsBackend() Assert.AreEqual(ActivityIdGenerator.GenerateId(activity.ForeignId, time).ToString(), activity.Id); } + + [Test] + public async Task TestStreamJsonConverterUTC() + { + var date0 = new DateTime(2023, 5, 10, 12, 30, 15, DateTimeKind.Utc); + var date0AsJsonNewtonsoft = Newtonsoft.Json.JsonConvert.SerializeObject(date0); + var date0AsJson = Stream.Utils.StreamJsonConverterUTC.SerializeObject(date0); + + Assert.AreEqual(date0AsJsonNewtonsoft, date0AsJson); + } } }