mirror of
https://github.com/bitwarden/server.git
synced 2025-07-02 00:22:50 -05:00
Start Migration from Newtonsoft.Json to System.Text.Json (#1803)
* Start switch to System.Text.Json * Work on switching to System.Text.Json * Main work on STJ refactor * Fix build errors * Run formatting * Delete unused file * Use legacy for two factor providers * Run formatter * Add TokenProviderTests * Run formatting * Fix merge issues * Switch to use JsonSerializer * Address PR feedback * Fix formatting * Ran formatter * Switch to async * Ensure Enums are serialized as strings * Fix formatting * Enqueue single items as arrays * Remove CreateAsync method on AzureQueueService
This commit is contained in:
@ -1,13 +1,13 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Threading.Tasks;
|
||||
using Bit.Core;
|
||||
using Bit.Core.Utilities;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Bit.Billing.Controllers
|
||||
{
|
||||
@ -53,7 +53,7 @@ namespace Bit.Billing.Controllers
|
||||
|
||||
try
|
||||
{
|
||||
var json = JsonConvert.SerializeObject(JsonConvert.DeserializeObject(body), Formatting.Indented);
|
||||
var json = JsonSerializer.Serialize(JsonSerializer.Deserialize<JsonDocument>(body), JsonHelpers.Indented);
|
||||
_logger.LogInformation(Constants.BypassFiltersEventId, "Apple IAP Notification:\n\n{0}", json);
|
||||
return new OkResult();
|
||||
}
|
||||
|
@ -1,11 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http.Json;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Threading.Tasks;
|
||||
using Bit.Core.Repositories;
|
||||
using Bit.Core.Settings;
|
||||
@ -13,7 +14,6 @@ using Bit.Core.Utilities;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Bit.Billing.Controllers
|
||||
{
|
||||
@ -62,23 +62,18 @@ namespace Bit.Billing.Controllers
|
||||
return new BadRequestResult();
|
||||
}
|
||||
|
||||
string body = null;
|
||||
using (var reader = new StreamReader(HttpContext.Request.Body, Encoding.UTF8))
|
||||
{
|
||||
body = await reader.ReadToEndAsync();
|
||||
}
|
||||
|
||||
if (string.IsNullOrWhiteSpace(body))
|
||||
using var body = await JsonSerializer.DeserializeAsync<JsonDocument>(HttpContext.Request.Body);
|
||||
var root = body.RootElement;
|
||||
if (root.ValueKind != JsonValueKind.Object)
|
||||
{
|
||||
return new BadRequestResult();
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
dynamic data = JsonConvert.DeserializeObject(body);
|
||||
string ticketId = data.ticket_id;
|
||||
string ticketContactEmail = data.ticket_contact_email;
|
||||
string ticketTags = data.ticket_tags;
|
||||
var ticketId = root.GetProperty("ticket_id").GetString();
|
||||
var ticketContactEmail = root.GetProperty("ticket_contact_email").GetString();
|
||||
var ticketTags = root.GetProperty("ticket_tags").GetString();
|
||||
if (string.IsNullOrWhiteSpace(ticketId) || string.IsNullOrWhiteSpace(ticketContactEmail))
|
||||
{
|
||||
return new BadRequestResult();
|
||||
@ -120,9 +115,11 @@ namespace Bit.Billing.Controllers
|
||||
updateBody.Add("tags", tagsToUpdate);
|
||||
}
|
||||
var updateRequest = new HttpRequestMessage(HttpMethod.Put,
|
||||
string.Format("https://bitwarden.freshdesk.com/api/v2/tickets/{0}", ticketId));
|
||||
updateRequest.Content = new StringContent(JsonConvert.SerializeObject(updateBody),
|
||||
Encoding.UTF8, "application/json");
|
||||
string.Format("https://bitwarden.freshdesk.com/api/v2/tickets/{0}", ticketId))
|
||||
{
|
||||
Content = JsonContent.Create(updateBody),
|
||||
};
|
||||
|
||||
await CallFreshdeskApiAsync(updateRequest);
|
||||
|
||||
|
||||
@ -132,9 +129,10 @@ namespace Bit.Billing.Controllers
|
||||
{ "private", true }
|
||||
};
|
||||
var noteRequest = new HttpRequestMessage(HttpMethod.Post,
|
||||
string.Format("https://bitwarden.freshdesk.com/api/v2/tickets/{0}/notes", ticketId));
|
||||
noteRequest.Content = new StringContent(JsonConvert.SerializeObject(noteBody),
|
||||
Encoding.UTF8, "application/json");
|
||||
string.Format("https://bitwarden.freshdesk.com/api/v2/tickets/{0}/notes", ticketId))
|
||||
{
|
||||
Content = JsonContent.Create(noteBody),
|
||||
};
|
||||
await CallFreshdeskApiAsync(noteRequest);
|
||||
}
|
||||
|
||||
|
@ -1,105 +0,0 @@
|
||||
using System;
|
||||
using Bit.Core.Utilities;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace Bit.Billing.Models
|
||||
{
|
||||
public class AppleReceiptNotification
|
||||
{
|
||||
[JsonProperty("notification_type")]
|
||||
public string NotificationType { get; set; }
|
||||
[JsonProperty("environment")]
|
||||
public string Environment { get; set; }
|
||||
[JsonProperty("auto_renew_status")]
|
||||
public string AutoRenewStatus { get; set; }
|
||||
[JsonProperty("auto_renew_product_id")]
|
||||
public string AutoRenewProductId { get; set; }
|
||||
[JsonProperty("auto_renew_status_change_date_ms")]
|
||||
[JsonConverter(typeof(MsEpochConverter))]
|
||||
public DateTime? AutoRenewStatusChangeDate { get; set; }
|
||||
[JsonProperty("latest_receipt")]
|
||||
public string LatestReceipt { get; set; }
|
||||
[JsonProperty("latest_receipt_info")]
|
||||
public AppleReceiptNotificationInfo LatestReceiptInfo { get; set; }
|
||||
[JsonProperty("latest_expired_receipt")]
|
||||
public string LatestExpiredReceipt { get; set; }
|
||||
[JsonProperty("latest_expired_receipt_info")]
|
||||
public AppleReceiptNotificationInfo LatestExpiredReceiptInfo { get; set; }
|
||||
|
||||
public string GetOriginalTransactionId()
|
||||
{
|
||||
if (LatestReceiptInfo != null)
|
||||
{
|
||||
return LatestReceiptInfo.OriginalTransactionId;
|
||||
}
|
||||
return LatestExpiredReceiptInfo?.OriginalTransactionId;
|
||||
}
|
||||
|
||||
public string GetTransactionId()
|
||||
{
|
||||
if (LatestReceiptInfo != null)
|
||||
{
|
||||
return LatestReceiptInfo.TransactionId;
|
||||
}
|
||||
return LatestExpiredReceiptInfo?.TransactionId;
|
||||
}
|
||||
|
||||
public DateTime? GetExpiresDate()
|
||||
{
|
||||
if (LatestReceiptInfo != null)
|
||||
{
|
||||
return LatestReceiptInfo.ExpiresDate;
|
||||
}
|
||||
return LatestExpiredReceiptInfo?.ExpiresDate;
|
||||
}
|
||||
|
||||
public string GetReceiptData()
|
||||
{
|
||||
return string.IsNullOrWhiteSpace(LatestReceipt) ? LatestExpiredReceipt : LatestReceipt;
|
||||
}
|
||||
|
||||
public class AppleReceiptNotificationInfo
|
||||
{
|
||||
[JsonProperty("bid")]
|
||||
public string Bid { get; set; }
|
||||
public string ProductId { get; set; }
|
||||
[JsonProperty("original_purchase_date_ms")]
|
||||
[JsonConverter(typeof(MsEpochConverter))]
|
||||
public DateTime? OriginalPurchaseDate { get; set; }
|
||||
[JsonProperty("expires_date")]
|
||||
[JsonConverter(typeof(MsEpochConverter))]
|
||||
public DateTime? ExpiresDate { get; set; }
|
||||
[JsonProperty("purchase_date_ms")]
|
||||
[JsonConverter(typeof(MsEpochConverter))]
|
||||
public DateTime? PurchaseDate { get; set; }
|
||||
[JsonProperty("subscription_group_identifier")]
|
||||
public string SubscriptionGroupIdentifier { get; set; }
|
||||
[JsonProperty("unique_identifier")]
|
||||
public string UniqueIdentifier { get; set; }
|
||||
[JsonProperty("original_transaction_id")]
|
||||
public string OriginalTransactionId { get; set; }
|
||||
[JsonProperty("transaction_id")]
|
||||
public string TransactionId { get; set; }
|
||||
[JsonProperty("quantity")]
|
||||
public string Quantity { get; set; }
|
||||
[JsonProperty("web_order_line_item_id")]
|
||||
public string WebOrderLineItemId { get; set; }
|
||||
[JsonProperty("item_id")]
|
||||
public string ItemId { 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()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user