From f153aad3f11a0a9d72df44cd17951d6a35f7d2fc Mon Sep 17 00:00:00 2001 From: Alexey Golub Date: Tue, 21 Apr 2020 14:36:38 +0300 Subject: [PATCH] Simplify FileSize --- DiscordChatExporter.Core.Models/FileSize.cs | 93 +++++++------------ .../Formatters/JsonMessageWriter.cs | 2 +- 2 files changed, 37 insertions(+), 58 deletions(-) diff --git a/DiscordChatExporter.Core.Models/FileSize.cs b/DiscordChatExporter.Core.Models/FileSize.cs index 23ef46f..d56fd6b 100644 --- a/DiscordChatExporter.Core.Models/FileSize.cs +++ b/DiscordChatExporter.Core.Models/FileSize.cs @@ -4,79 +4,58 @@ namespace DiscordChatExporter.Core.Models { // Loosely based on https://github.com/omar/ByteSize (MIT license) - public struct FileSize + public readonly struct FileSize { - public const long BytesInKiloByte = 1024; - public const long BytesInMegaByte = 1024 * BytesInKiloByte; - public const long BytesInGigaByte = 1024 * BytesInMegaByte; - public const long BytesInTeraByte = 1024 * BytesInGigaByte; - public const long BytesInPetaByte = 1024 * BytesInTeraByte; - - public const string ByteSymbol = "B"; - public const string KiloByteSymbol = "KB"; - public const string MegaByteSymbol = "MB"; - public const string GigaByteSymbol = "GB"; - public const string TeraByteSymbol = "TB"; - public const string PetaByteSymbol = "PB"; - - public double Bytes { get; } - public double KiloBytes => Bytes / BytesInKiloByte; - public double MegaBytes => Bytes / BytesInMegaByte; - public double GigaBytes => Bytes / BytesInGigaByte; - public double TeraBytes => Bytes / BytesInTeraByte; - public double PetaBytes => Bytes / BytesInPetaByte; - - public string LargestWholeNumberSymbol + public long TotalBytes { get; } + + public double TotalKiloBytes => TotalBytes / 1024.0; + public double TotalMegaBytes => TotalKiloBytes / 1024.0; + public double TotalGigaBytes => TotalMegaBytes / 1024.0; + public double TotalTeraBytes => TotalGigaBytes / 1024.0; + public double TotalPetaBytes => TotalTeraBytes / 1024.0; + + public FileSize(long bytes) => TotalBytes = bytes; + + private double GetLargestWholeNumberValue() { - get - { - if (Math.Abs(PetaBytes) >= 1) - return PetaByteSymbol; + if (Math.Abs(TotalPetaBytes) >= 1) + return TotalPetaBytes; - if (Math.Abs(TeraBytes) >= 1) - return TeraByteSymbol; + if (Math.Abs(TotalTeraBytes) >= 1) + return TotalTeraBytes; - if (Math.Abs(GigaBytes) >= 1) - return GigaByteSymbol; + if (Math.Abs(TotalGigaBytes) >= 1) + return TotalGigaBytes; - if (Math.Abs(MegaBytes) >= 1) - return MegaByteSymbol; + if (Math.Abs(TotalMegaBytes) >= 1) + return TotalMegaBytes; - if (Math.Abs(KiloBytes) >= 1) - return KiloByteSymbol; + if (Math.Abs(TotalKiloBytes) >= 1) + return TotalKiloBytes; - return ByteSymbol; - } + return TotalBytes; } - public double LargestWholeNumberValue + private string GetLargestWholeNumberSymbol() { - get - { - if (Math.Abs(PetaBytes) >= 1) - return PetaBytes; + if (Math.Abs(TotalPetaBytes) >= 1) + return "PB"; - if (Math.Abs(TeraBytes) >= 1) - return TeraBytes; + if (Math.Abs(TotalTeraBytes) >= 1) + return "TB"; - if (Math.Abs(GigaBytes) >= 1) - return GigaBytes; + if (Math.Abs(TotalGigaBytes) >= 1) + return "GB"; - if (Math.Abs(MegaBytes) >= 1) - return MegaBytes; + if (Math.Abs(TotalMegaBytes) >= 1) + return "MB"; - if (Math.Abs(KiloBytes) >= 1) - return KiloBytes; + if (Math.Abs(TotalKiloBytes) >= 1) + return "KB"; - return Bytes; - } - } - - public FileSize(double bytes) - { - Bytes = bytes; + return "B"; } - public override string ToString() => $"{LargestWholeNumberValue:0.##} {LargestWholeNumberSymbol}"; + public override string ToString() => $"{GetLargestWholeNumberValue():0.##} {GetLargestWholeNumberSymbol()}"; } } \ No newline at end of file diff --git a/DiscordChatExporter.Core.Rendering/Formatters/JsonMessageWriter.cs b/DiscordChatExporter.Core.Rendering/Formatters/JsonMessageWriter.cs index e5b5f58..6c89856 100644 --- a/DiscordChatExporter.Core.Rendering/Formatters/JsonMessageWriter.cs +++ b/DiscordChatExporter.Core.Rendering/Formatters/JsonMessageWriter.cs @@ -88,7 +88,7 @@ namespace DiscordChatExporter.Core.Rendering.Formatters _writer.WriteString("id", attachment.Id); _writer.WriteString("url", attachment.Url); _writer.WriteString("fileName", attachment.FileName); - _writer.WriteNumber("fileSizeBytes", (long) attachment.FileSize.Bytes); + _writer.WriteNumber("fileSizeBytes", attachment.FileSize.TotalBytes); _writer.WriteEndObject(); }