using System.Text.Json; namespace ZB.MOM.WW.MxGateway.Server.Security.Authentication; public static class ApiKeyConstraintSerializer { private static readonly JsonSerializerOptions JsonOptions = new() { PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower, WriteIndented = false, }; /// Serializes API key constraints to JSON, or returns null if the constraints are empty. /// The constraints to serialize. public static string? Serialize(ApiKeyConstraints constraints) { ArgumentNullException.ThrowIfNull(constraints); return constraints.IsEmpty ? null : JsonSerializer.Serialize(constraints, JsonOptions); } /// Deserializes API key constraints from JSON, or returns empty constraints if JSON is null or whitespace. /// The JSON string to deserialize. public static ApiKeyConstraints Deserialize(string? json) { if (string.IsNullOrWhiteSpace(json)) { return ApiKeyConstraints.Empty; } return JsonSerializer.Deserialize(json, JsonOptions) ?? ApiKeyConstraints.Empty; } }