mirror of
https://github.com/Tyrrrz/DiscordChatExporter.git
synced 2025-06-08 10:22:25 -04:00
Get rid of ByteSize in favor of our own class
This commit is contained in:
parent
cac48b3541
commit
4113101c0c
5 changed files with 87 additions and 7 deletions
|
@ -16,7 +16,6 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="ByteSize" Version="1.3.0" />
|
|
||||||
<PackageReference Include="Failsafe" Version="1.1.0" />
|
<PackageReference Include="Failsafe" Version="1.1.0" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
|
<PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
|
||||||
<PackageReference Include="Onova" Version="2.4.2" />
|
<PackageReference Include="Onova" Version="2.4.2" />
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using System;
|
using System;
|
||||||
using ByteSizeLib;
|
|
||||||
|
|
||||||
namespace DiscordChatExporter.Core.Models
|
namespace DiscordChatExporter.Core.Models
|
||||||
{
|
{
|
||||||
|
@ -23,9 +22,9 @@ namespace DiscordChatExporter.Core.Models
|
||||||
FileName.EndsWith(".gif", StringComparison.OrdinalIgnoreCase) ||
|
FileName.EndsWith(".gif", StringComparison.OrdinalIgnoreCase) ||
|
||||||
FileName.EndsWith(".bmp", StringComparison.OrdinalIgnoreCase);
|
FileName.EndsWith(".bmp", StringComparison.OrdinalIgnoreCase);
|
||||||
|
|
||||||
public ByteSize FileSize { get; }
|
public FileSize FileSize { get; }
|
||||||
|
|
||||||
public Attachment(string id, int? width, int? height, string url, string fileName, ByteSize fileSize)
|
public Attachment(string id, int? width, int? height, string url, string fileName, FileSize fileSize)
|
||||||
{
|
{
|
||||||
Id = id;
|
Id = id;
|
||||||
Url = url;
|
Url = url;
|
||||||
|
|
84
DiscordChatExporter.Core/Models/FileSize.cs
Normal file
84
DiscordChatExporter.Core/Models/FileSize.cs
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace DiscordChatExporter.Core.Models
|
||||||
|
{
|
||||||
|
// Loosely based on https://github.com/omar/ByteSize (MIT license)
|
||||||
|
|
||||||
|
public 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
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
// Absolute value is used to deal with negative values
|
||||||
|
if (Math.Abs(PetaBytes) >= 1)
|
||||||
|
return PetaByteSymbol;
|
||||||
|
|
||||||
|
if (Math.Abs(TeraBytes) >= 1)
|
||||||
|
return TeraByteSymbol;
|
||||||
|
|
||||||
|
if (Math.Abs(GigaBytes) >= 1)
|
||||||
|
return GigaByteSymbol;
|
||||||
|
|
||||||
|
if (Math.Abs(MegaBytes) >= 1)
|
||||||
|
return MegaByteSymbol;
|
||||||
|
|
||||||
|
if (Math.Abs(KiloBytes) >= 1)
|
||||||
|
return KiloByteSymbol;
|
||||||
|
|
||||||
|
return ByteSymbol;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public double LargestWholeNumberValue
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
// Absolute value is used to deal with negative values
|
||||||
|
if (Math.Abs(PetaBytes) >= 1)
|
||||||
|
return PetaBytes;
|
||||||
|
|
||||||
|
if (Math.Abs(TeraBytes) >= 1)
|
||||||
|
return TeraBytes;
|
||||||
|
|
||||||
|
if (Math.Abs(GigaBytes) >= 1)
|
||||||
|
return GigaBytes;
|
||||||
|
|
||||||
|
if (Math.Abs(MegaBytes) >= 1)
|
||||||
|
return MegaBytes;
|
||||||
|
|
||||||
|
if (Math.Abs(KiloBytes) >= 1)
|
||||||
|
return KiloBytes;
|
||||||
|
|
||||||
|
return Bytes;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public FileSize(double bytes)
|
||||||
|
{
|
||||||
|
Bytes = bytes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ToString() => $"{LargestWholeNumberValue:0.##} {LargestWholeNumberSymbol}";
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,7 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using ByteSizeLib;
|
|
||||||
using DiscordChatExporter.Core.Internal;
|
using DiscordChatExporter.Core.Internal;
|
||||||
using DiscordChatExporter.Core.Models;
|
using DiscordChatExporter.Core.Models;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
|
@ -72,7 +71,7 @@ namespace DiscordChatExporter.Core.Services
|
||||||
var fileName = json["filename"].Value<string>();
|
var fileName = json["filename"].Value<string>();
|
||||||
var fileSizeBytes = json["size"].Value<long>();
|
var fileSizeBytes = json["size"].Value<long>();
|
||||||
|
|
||||||
var fileSize = ByteSize.FromBytes(fileSizeBytes);
|
var fileSize = new FileSize(fileSizeBytes);
|
||||||
|
|
||||||
return new Attachment(id, width, height, url, fileName, fileSize);
|
return new Attachment(id, width, height, url, fileName, fileSize);
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,6 @@ DiscordChatExporter can be used to export message history from a [Discord](https
|
||||||
- [Scriban](https://github.com/lunet-io/scriban)
|
- [Scriban](https://github.com/lunet-io/scriban)
|
||||||
- [CommandLineParser](https://github.com/commandlineparser/commandline)
|
- [CommandLineParser](https://github.com/commandlineparser/commandline)
|
||||||
- [Ookii.Dialogs](https://github.com/caioproiete/ookii-dialogs-wpf)
|
- [Ookii.Dialogs](https://github.com/caioproiete/ookii-dialogs-wpf)
|
||||||
- [ByteSize](https://github.com/omar/ByteSize)
|
|
||||||
- [Failsafe](https://github.com/Tyrrrz/Failsafe)
|
- [Failsafe](https://github.com/Tyrrrz/Failsafe)
|
||||||
- [Gress](https://github.com/Tyrrrz/Gress)
|
- [Gress](https://github.com/Tyrrrz/Gress)
|
||||||
- [Onova](https://github.com/Tyrrrz/Onova)
|
- [Onova](https://github.com/Tyrrrz/Onova)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue