From 62586014bda8a6032ae1e14a4f6fee6f025a70b8 Mon Sep 17 00:00:00 2001 From: mmuffins Date: Wed, 23 May 2018 23:09:34 +0200 Subject: [PATCH] Added epoch time converter. --- SteamStorefrontAPI/Classes/Converters.cs | 33 +++++++++++++++++++ .../Classes/featured/FeaturedApp.cs | 3 +- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/SteamStorefrontAPI/Classes/Converters.cs b/SteamStorefrontAPI/Classes/Converters.cs index 8a742e6..67a5537 100644 --- a/SteamStorefrontAPI/Classes/Converters.cs +++ b/SteamStorefrontAPI/Classes/Converters.cs @@ -74,4 +74,37 @@ namespace SteamStorefrontAPI.Classes } } + // Converts an epoch string to a datetime object + internal class EpochToDateTimeConverter : JsonConverter + { + public override bool CanRead + { + get => true; + } + + public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer) + { + if (reader.TokenType == JsonToken.Null) return null; + var value = serializer.Deserialize(reader); + + long parsedValue; + if (long.TryParse(value, out parsedValue)) + { + return new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(parsedValue); + } + + return null; + } + + public override bool CanConvert(Type objectType) + { + throw new NotImplementedException(); + } + + public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer) + { + throw new NotImplementedException(); + } + } + } diff --git a/SteamStorefrontAPI/Classes/featured/FeaturedApp.cs b/SteamStorefrontAPI/Classes/featured/FeaturedApp.cs index faa29c4..e1ce75c 100644 --- a/SteamStorefrontAPI/Classes/featured/FeaturedApp.cs +++ b/SteamStorefrontAPI/Classes/featured/FeaturedApp.cs @@ -61,7 +61,8 @@ namespace SteamStorefrontAPI.Classes public string HeaderImage { get; set; } [JsonProperty("discount_expiration", NullValueHandling = NullValueHandling.Ignore)] - public long? DiscountExpiration { get; set; } + [JsonConverter(typeof(EpochToDateTimeConverter))] + public DateTime? DiscountExpiration { get; set; } [JsonProperty("controller_support", NullValueHandling = NullValueHandling.Ignore)] [JsonConverter(typeof(ControllerSupportConverter))]