From 7bc71e51e28f1ff4f1bba18f697b5308cbef1c38 Mon Sep 17 00:00:00 2001 From: Zymlex Date: Mon, 13 Jul 2020 15:14:26 +1000 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6?= =?UTF-8?q?=D0=BA=D0=B0=20null'=D1=8B=D1=85=20=D0=B7=D0=BD=D0=B0=D1=87?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JsonToNetscape/CookieObj.cs | 25 ++++++++++++------------- JsonToNetscape/Program.cs | 2 ++ 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/JsonToNetscape/CookieObj.cs b/JsonToNetscape/CookieObj.cs index 2295042..492b536 100644 --- a/JsonToNetscape/CookieObj.cs +++ b/JsonToNetscape/CookieObj.cs @@ -7,30 +7,29 @@ namespace JsonToNetscape public class CookieObj { public string domain { get; set; } - public double expirationDate { get; set; } - public bool hostOnly { get; set; } - public bool httpOnly { get; set; } + public double? expirationDate { get; set; } + public bool? hostOnly { get; set; } + public bool? httpOnly { get; set; } public string name { get; set; } public string path { get; set; } public string sameSite { get; set; } - public bool secure { get; set; } - public bool session { get; set; } + public bool? secure { get; set; } + public bool? session { get; set; } public string storeId { get; set; } public string value { get; set; } - public int id { get; set; } + public int? id { get; set; } public override string ToString() { - var expiryStr = (expirationDate >= 0 ? TimeUtils.FromSecondsSinceEpoch(expirationDate) : DateTime.MinValue).ToString(CultureInfo.InvariantCulture).ToUpper(); + var expiryStr = expirationDate != null ? (expirationDate >= 0 ? TimeUtils.FromSecondsSinceEpoch((double)expirationDate) : DateTime.MinValue).ToString(CultureInfo.InvariantCulture).ToUpper() : null; var sameSiteStr = "Unspecified"; - if (sameSite.Contains("lax")) sameSiteStr = "Lax"; - if (sameSite.Contains("strict")) sameSiteStr = "Strict"; + if (sameSite?.Contains("lax") ?? false) sameSiteStr = "Lax"; + if (sameSite?.Contains("strict") ?? false) sameSiteStr = "Strict"; - return domain + "\t" + (!string.IsNullOrWhiteSpace(domain)).ToString(CultureInfo.InvariantCulture).ToUpper() + "\t" + path + "\t" + secure.ToString(CultureInfo.InvariantCulture).ToUpper() + "\t" + - expiryStr.ToString(CultureInfo.InvariantCulture).ToUpper() + - "\t" + name + "\t" + value + "\t" + httpOnly.ToString(CultureInfo.InvariantCulture).ToUpper() + "\t" + - (expirationDate < 0.01).ToString(CultureInfo.InvariantCulture).ToUpper() + "\t" + sameSiteStr + "\t" + "Medium"; + return domain + "\t" + (!string.IsNullOrWhiteSpace(domain)).ToString(CultureInfo.InvariantCulture).ToUpper() + "\t" + path + "\t" + (secure?.ToString(CultureInfo.InvariantCulture).ToUpper() ?? "FALSE") + "\t" + + expiryStr + "\t" + name + "\t" + value + "\t" + (httpOnly?.ToString(CultureInfo.InvariantCulture).ToUpper() ?? "FALSE") + "\t" + + (expirationDate == null || expirationDate < 0.01).ToString(CultureInfo.InvariantCulture).ToUpper() + "\t" + sameSiteStr + "\t" + "Medium"; } diff --git a/JsonToNetscape/Program.cs b/JsonToNetscape/Program.cs index 015e351..734e8e1 100644 --- a/JsonToNetscape/Program.cs +++ b/JsonToNetscape/Program.cs @@ -8,6 +8,8 @@ namespace JsonToNetscape { internal static class Program { + // "Host\tDomainFlag\tPath\tSecureFlag\tExpiry\tName\tValue\tHttpOnlyFlag\tSessionFlag\r\n ..." for Firefox + // "Host\tDomainFlag\tPath\tSecureFlag\tExpiry\tName\tValue\tHttpOnlyFlag\tSessionFlag\tSameSite\tPriority\r\n ..." for Chrome. private static void Main(string[] args) { if (args.Length == 0)