Refactor MaxBitrate and UploadLimit in GuildHelper (#2854)

This commit is contained in:
FluffyDoggo
2024-02-19 02:59:14 -06:00
committed by GitHub
parent 1eb7a53f78
commit 6256de42bc
5 changed files with 23 additions and 36 deletions

View File

@@ -136,17 +136,29 @@ namespace Discord.Rest
public static Task DeleteAsync(IGuild guild, BaseDiscordClient client, RequestOptions options)
=> client.ApiClient.DeleteGuildAsync(guild.Id, options);
public static ulong GetUploadLimit(IGuild guild)
public static int GetMaxBitrate(PremiumTier premiumTier)
{
var tierFactor = guild.PremiumTier switch
return premiumTier switch
{
PremiumTier.Tier1 => 128000,
PremiumTier.Tier2 => 256000,
PremiumTier.Tier3 => 384000,
_ => 96000,
};
}
public static ulong GetUploadLimit(PremiumTier premiumTier)
{
ulong tierFactor = premiumTier switch
{
PremiumTier.Tier2 => 50,
PremiumTier.Tier3 => 100,
_ => 25
};
var mebibyte = Math.Pow(2, 20);
return (ulong)(tierFactor * mebibyte);
// 1 << 20 = 2 pow 20
var mebibyte = 1UL << 20;
return tierFactor * mebibyte;
}
public static async Task<GuildIncidentsData> ModifyGuildIncidentActionsAsync(IGuild guild, BaseDiscordClient client, Action<GuildIncidentsDataProperties> func, RequestOptions options = null)

View File

@@ -91,21 +91,10 @@ namespace Discord.Rest
public int? ApproximatePresenceCount { get; private set; }
/// <inheritdoc/>
public int MaxBitrate
{
get
{
return PremiumTier switch
{
PremiumTier.Tier1 => 128000,
PremiumTier.Tier2 => 256000,
PremiumTier.Tier3 => 384000,
_ => 96000,
};
}
}
=> GuildHelper.GetMaxBitrate(PremiumTier);
/// <inheritdoc/>
public ulong MaxUploadLimit
=> GuildHelper.GetUploadLimit(this);
=> GuildHelper.GetUploadLimit(PremiumTier);
/// <inheritdoc />
public NsfwLevel NsfwLevel { get; private set; }
/// <inheritdoc />

View File

@@ -203,21 +203,10 @@ namespace Discord.WebSocket
}
/// <inheritdoc/>
public int MaxBitrate
{
get
{
return PremiumTier switch
{
PremiumTier.Tier1 => 128000,
PremiumTier.Tier2 => 256000,
PremiumTier.Tier3 => 384000,
_ => 96000,
};
}
}
=> GuildHelper.GetMaxBitrate(PremiumTier);
/// <inheritdoc/>
public ulong MaxUploadLimit
=> GuildHelper.GetUploadLimit(this);
=> GuildHelper.GetUploadLimit(PremiumTier);
/// <summary>
/// Gets the widget channel (i.e. the channel set in the guild's widget settings) in this guild.
/// </summary>

View File

@@ -32,7 +32,7 @@ public class DiscordRestApiClientTests : IClassFixture<RestGuildFixture>, IAsync
[Fact]
public async Task UploadFile_WithMaximumSize_DontThrowsException()
{
var fileSize = GuildHelper.GetUploadLimit(_guild);
var fileSize = GuildHelper.GetUploadLimit(_guild.PremiumTier);
using var stream = new MemoryStream(new byte[fileSize]);
await _apiClient.UploadFileAsync(_channel.Id, new UploadFileParams(new FileAttachment(stream, "filename")));
@@ -41,7 +41,7 @@ public class DiscordRestApiClientTests : IClassFixture<RestGuildFixture>, IAsync
[Fact]
public async Task UploadFile_WithOverSize_ThrowsException()
{
var fileSize = GuildHelper.GetUploadLimit(_guild) + 1;
var fileSize = GuildHelper.GetUploadLimit(_guild.PremiumTier) + 1;
using var stream = new MemoryStream(new byte[fileSize]);
Func<Task> upload = async () =>

View File

@@ -14,12 +14,9 @@ public class GuildHelperTests
[InlineData(PremiumTier.Tier3, 100)]
public void GetUploadLimit(PremiumTier tier, ulong factor)
{
var guild = Substitute.For<IGuild>();
guild.PremiumTier.Returns(tier);
var expected = factor * (ulong)Math.Pow(2, 20);
var actual = GuildHelper.GetUploadLimit(guild);
var actual = GuildHelper.GetUploadLimit(tier);
Assert.Equal(expected, actual);
}