mirror of
https://github.com/Tyrrrz/DiscordChatExporter.git
synced 2025-05-23 11:16:59 -04:00
Simplify FileSize
This commit is contained in:
parent
6f1c944cb3
commit
f153aad3f1
2 changed files with 34 additions and 55 deletions
|
@ -4,79 +4,58 @@ namespace DiscordChatExporter.Core.Models
|
||||||
{
|
{
|
||||||
// Loosely based on https://github.com/omar/ByteSize (MIT license)
|
// Loosely based on https://github.com/omar/ByteSize (MIT license)
|
||||||
|
|
||||||
public struct FileSize
|
public readonly struct FileSize
|
||||||
{
|
{
|
||||||
public const long BytesInKiloByte = 1024;
|
public long TotalBytes { get; }
|
||||||
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 double TotalKiloBytes => TotalBytes / 1024.0;
|
||||||
public const string KiloByteSymbol = "KB";
|
public double TotalMegaBytes => TotalKiloBytes / 1024.0;
|
||||||
public const string MegaByteSymbol = "MB";
|
public double TotalGigaBytes => TotalMegaBytes / 1024.0;
|
||||||
public const string GigaByteSymbol = "GB";
|
public double TotalTeraBytes => TotalGigaBytes / 1024.0;
|
||||||
public const string TeraByteSymbol = "TB";
|
public double TotalPetaBytes => TotalTeraBytes / 1024.0;
|
||||||
public const string PetaByteSymbol = "PB";
|
|
||||||
|
|
||||||
public double Bytes { get; }
|
public FileSize(long bytes) => TotalBytes = bytes;
|
||||||
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
|
private double GetLargestWholeNumberValue()
|
||||||
{
|
{
|
||||||
get
|
if (Math.Abs(TotalPetaBytes) >= 1)
|
||||||
{
|
return TotalPetaBytes;
|
||||||
if (Math.Abs(PetaBytes) >= 1)
|
|
||||||
return PetaByteSymbol;
|
|
||||||
|
|
||||||
if (Math.Abs(TeraBytes) >= 1)
|
if (Math.Abs(TotalTeraBytes) >= 1)
|
||||||
return TeraByteSymbol;
|
return TotalTeraBytes;
|
||||||
|
|
||||||
if (Math.Abs(GigaBytes) >= 1)
|
if (Math.Abs(TotalGigaBytes) >= 1)
|
||||||
return GigaByteSymbol;
|
return TotalGigaBytes;
|
||||||
|
|
||||||
if (Math.Abs(MegaBytes) >= 1)
|
if (Math.Abs(TotalMegaBytes) >= 1)
|
||||||
return MegaByteSymbol;
|
return TotalMegaBytes;
|
||||||
|
|
||||||
if (Math.Abs(KiloBytes) >= 1)
|
if (Math.Abs(TotalKiloBytes) >= 1)
|
||||||
return KiloByteSymbol;
|
return TotalKiloBytes;
|
||||||
|
|
||||||
return ByteSymbol;
|
return TotalBytes;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public double LargestWholeNumberValue
|
private string GetLargestWholeNumberSymbol()
|
||||||
{
|
{
|
||||||
get
|
if (Math.Abs(TotalPetaBytes) >= 1)
|
||||||
{
|
return "PB";
|
||||||
if (Math.Abs(PetaBytes) >= 1)
|
|
||||||
return PetaBytes;
|
|
||||||
|
|
||||||
if (Math.Abs(TeraBytes) >= 1)
|
if (Math.Abs(TotalTeraBytes) >= 1)
|
||||||
return TeraBytes;
|
return "TB";
|
||||||
|
|
||||||
if (Math.Abs(GigaBytes) >= 1)
|
if (Math.Abs(TotalGigaBytes) >= 1)
|
||||||
return GigaBytes;
|
return "GB";
|
||||||
|
|
||||||
if (Math.Abs(MegaBytes) >= 1)
|
if (Math.Abs(TotalMegaBytes) >= 1)
|
||||||
return MegaBytes;
|
return "MB";
|
||||||
|
|
||||||
if (Math.Abs(KiloBytes) >= 1)
|
if (Math.Abs(TotalKiloBytes) >= 1)
|
||||||
return KiloBytes;
|
return "KB";
|
||||||
|
|
||||||
return Bytes;
|
return "B";
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public FileSize(double bytes)
|
public override string ToString() => $"{GetLargestWholeNumberValue():0.##} {GetLargestWholeNumberSymbol()}";
|
||||||
{
|
|
||||||
Bytes = bytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string ToString() => $"{LargestWholeNumberValue:0.##} {LargestWholeNumberSymbol}";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -88,7 +88,7 @@ namespace DiscordChatExporter.Core.Rendering.Formatters
|
||||||
_writer.WriteString("id", attachment.Id);
|
_writer.WriteString("id", attachment.Id);
|
||||||
_writer.WriteString("url", attachment.Url);
|
_writer.WriteString("url", attachment.Url);
|
||||||
_writer.WriteString("fileName", attachment.FileName);
|
_writer.WriteString("fileName", attachment.FileName);
|
||||||
_writer.WriteNumber("fileSizeBytes", (long) attachment.FileSize.Bytes);
|
_writer.WriteNumber("fileSizeBytes", attachment.FileSize.TotalBytes);
|
||||||
|
|
||||||
_writer.WriteEndObject();
|
_writer.WriteEndObject();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue