From 9ddfe3e94713dc3065bd9472553f51ee56bca8eb Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Wed, 18 Sep 2019 17:43:17 -0400 Subject: [PATCH] fix json serialization of receipt status --- .../Models/Business/AppleReceiptStatus.cs | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/Core/Models/Business/AppleReceiptStatus.cs b/src/Core/Models/Business/AppleReceiptStatus.cs index e4dacdc5a5..b28ecf6908 100644 --- a/src/Core/Models/Business/AppleReceiptStatus.cs +++ b/src/Core/Models/Business/AppleReceiptStatus.cs @@ -3,7 +3,9 @@ using System.Collections.Generic; using System.Linq; using Bit.Core.Enums; using Bit.Core.Models.Table; +using Bit.Core.Utilities; using Newtonsoft.Json; +using Newtonsoft.Json.Converters; namespace Bit.Billing.Models { @@ -20,7 +22,7 @@ namespace Bit.Billing.Models [JsonProperty("latest_receipt_info")] public List LatestReceiptInfo { get; set; } [JsonProperty("pending_renewal_info")] - public AppleRenewalInfo PendingRenewalInfo { get; set; } + public List PendingRenewalInfo { get; set; } public string GetOriginalTransactionId() { @@ -67,7 +69,8 @@ namespace Bit.Billing.Models public string ReceiptType { get; set; } [JsonProperty("bundle_id")] public string BundleId { get; set; } - [JsonProperty("receipt_creation_date")] + [JsonProperty("receipt_creation_date_ms")] + [JsonConverter(typeof(MsEpochConverter))] public DateTime ReceiptCreationDate { get; set; } [JsonProperty("in_app")] public List InApp { get; set; } @@ -99,14 +102,30 @@ namespace Bit.Billing.Models public string TransactionId { get; set; } [JsonProperty("original_transaction_id")] public string OriginalTransactionId { get; set; } - [JsonProperty("purchase_date")] + [JsonProperty("purchase_date_ms")] + [JsonConverter(typeof(MsEpochConverter))] public DateTime PurchaseDate { get; set; } - [JsonProperty("original_purchase_date")] + [JsonProperty("original_purchase_date_ms")] + [JsonConverter(typeof(MsEpochConverter))] public DateTime OriginalPurchaseDate { get; set; } - [JsonProperty("expires_date")] + [JsonProperty("expires_date_ms")] + [JsonConverter(typeof(MsEpochConverter))] public DateTime ExpiresDate { get; set; } [JsonProperty("web_order_line_item_id")] public string WebOrderLineItemId { get; set; } } + + public class MsEpochConverter : DateTimeConverterBase + { + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteRawValue(CoreHelpers.ToEpocMilliseconds((DateTime)value).ToString()); + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + return CoreHelpers.FromEpocMilliseconds(long.Parse(reader.Value.ToString())); + } + } } }