using Newtonsoft.Json; using System; using System.IO; using System.IO.Compression; using System.Text; namespace HSUI.Config.Profiles { public static class ImportExportHelper { public static string CompressAndBase64Encode(string jsonString) { using MemoryStream output = new(); using (DeflateStream gzip = new(output, CompressionLevel.Optimal)) { using StreamWriter writer = new(gzip, Encoding.UTF8); writer.Write(jsonString); } return Convert.ToBase64String(output.ToArray()); } public static string Base64DecodeAndDecompress(string base64String) { var base64EncodedBytes = Convert.FromBase64String(base64String); using MemoryStream inputStream = new(base64EncodedBytes); using DeflateStream gzip = new(inputStream, CompressionMode.Decompress); using StreamReader reader = new(gzip, Encoding.UTF8); var decodedString = reader.ReadToEnd(); return decodedString; } public static string GenerateExportString(object obj) { JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple, TypeNameHandling = TypeNameHandling.Objects }; var jsonString = JsonConvert.SerializeObject(obj, Formatting.Indented, settings); return CompressAndBase64Encode(jsonString); } } }