diff --git a/DisCatSharp.ThirdPartyLookups/DiscordClientExtensions.cs b/DisCatSharp.ThirdPartyLookups/DiscordClientExtensions.cs
index 05085e6b5..cd210c798 100644
--- a/DisCatSharp.ThirdPartyLookups/DiscordClientExtensions.cs
+++ b/DisCatSharp.ThirdPartyLookups/DiscordClientExtensions.cs
@@ -1,54 +1,59 @@
// This file is part of the DisCatSharp project, based off DSharpPlus.
//
// Copyright (c) 2021-2022 AITSYS
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
using System;
+using DisCatSharp.ThirdPartyLookups.Entities;
+
namespace DisCatSharp.ThirdPartyLookups;
///
/// The discord client extensions.
///
public static class DiscordClientExtensions
{
///
/// Creates a new Third Party Lookup client with specified settings.
///
/// Discord client to create Lavalink instance for.
/// Lavalink client instance.
- public static ThirdPartyLookupExtension UseThirdPartyLookup(this DiscordClient client)
+ public static ThirdPartyLookupExtension UseThirdPartyLookup(this DiscordClient client, ThirdPartyLookupConfiguration configuration = null)
{
if (client.GetExtension() != null)
throw new InvalidOperationException("Third Party Lookup is already enabled for that client.");
+ configuration ??= new();
+
var tp = new ThirdPartyLookupExtension();
+ tp.lookupConfiguration = configuration;
client.AddExtension(tp);
return tp;
}
///
/// Gets the active instance of the Third Party Lookups client for the DiscordClient.
///
/// Discord client to get Lavalink instance for.
/// Lavalink client instance.
public static ThirdPartyLookupExtension GetThirdPartyLookup(this DiscordClient client)
=> client.GetExtension();
}
diff --git a/DisCatSharp.ThirdPartyLookups/DiscordClientExtensions.cs b/DisCatSharp.ThirdPartyLookups/Entities/ThirdPartyLookupConfiguration.cs
similarity index 55%
copy from DisCatSharp.ThirdPartyLookups/DiscordClientExtensions.cs
copy to DisCatSharp.ThirdPartyLookups/Entities/ThirdPartyLookupConfiguration.cs
index 05085e6b5..d730af165 100644
--- a/DisCatSharp.ThirdPartyLookups/DiscordClientExtensions.cs
+++ b/DisCatSharp.ThirdPartyLookups/Entities/ThirdPartyLookupConfiguration.cs
@@ -1,54 +1,46 @@
// This file is part of the DisCatSharp project, based off DSharpPlus.
//
// Copyright (c) 2021-2022 AITSYS
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
-namespace DisCatSharp.ThirdPartyLookups;
+namespace DisCatSharp.ThirdPartyLookups.Entities;
///
-/// The discord client extensions.
+/// The configuration for Third Party Lookups
///
-public static class DiscordClientExtensions
+public class ThirdPartyLookupConfiguration
{
///
- /// Creates a new Third Party Lookup client with specified settings.
+ /// The auth token used for lookups via discordbotlist.com
///
- /// Discord client to create Lavalink instance for.
- /// Lavalink client instance.
- public static ThirdPartyLookupExtension UseThirdPartyLookup(this DiscordClient client)
- {
- if (client.GetExtension() != null)
- throw new InvalidOperationException("Third Party Lookup is already enabled for that client.");
-
- var tp = new ThirdPartyLookupExtension();
- client.AddExtension(tp);
- return tp;
- }
+ public string? DiscordBotListToken { get; set; }
///
- /// Gets the active instance of the Third Party Lookups client for the DiscordClient.
+ /// The auth token used for looks up via top.gg.
+ /// You can find out how to get a token here:
///
- /// Discord client to get Lavalink instance for.
- /// Lavalink client instance.
- public static ThirdPartyLookupExtension GetThirdPartyLookup(this DiscordClient client)
- => client.GetExtension();
+ public string? TopGGToken { get; set; }
}
diff --git a/DisCatSharp.ThirdPartyLookups/ThirdPartyLookupExtension.cs b/DisCatSharp.ThirdPartyLookups/ThirdPartyLookupExtension.cs
index 5172ccc66..382897b82 100644
--- a/DisCatSharp.ThirdPartyLookups/ThirdPartyLookupExtension.cs
+++ b/DisCatSharp.ThirdPartyLookups/ThirdPartyLookupExtension.cs
@@ -1,89 +1,91 @@
// This file is part of the DisCatSharp project, based off DSharpPlus.
//
// Copyright (c) 2021-2022 AITSYS
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using DisCatSharp.Entities;
using DisCatSharp.ThirdPartyLookups.Entities;
using DisCatSharp.ThirdPartyLookups.Exceptions;
using Newtonsoft.Json;
namespace DisCatSharp.ThirdPartyLookups;
///
/// The third party lookup extension.
///
public class ThirdPartyLookupExtension : BaseExtension
{
+ internal ThirdPartyLookupConfiguration lookupConfiguration { get; set; }
+
///
/// DO NOT USE THIS MANUALLY.
///
/// DO NOT USE THIS MANUALLY.
///
protected override void Setup(DiscordClient client)
{
if (this.Client != null)
throw new InvalidOperationException("What did I tell you?");
this.Client = client;
}
///
/// Gets a mee6 leaderboard based of a DiscordGuild.
///
/// The guild to fetch.
///
/// Thrown if no guild id was provided.
/// Thrown if the guild was not found.
public async Task GetMee6Leaderboard(DiscordGuild Guild)
=> await this.GetMee6Leaderboard(Guild.Id);
///
/// Gets a mee6 leaderboard based of a guild id.
///
/// The guild id to fetch.
///
/// Thrown if no guild id was provided.
/// Thrown if the guild was not found.
public async Task GetMee6Leaderboard(ulong GuildId)
{
if (GuildId == 0)
throw new ArgumentException("Please provide a valid guild id.");
var client = new HttpClient();
client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", $"DisCatSharp.ThirdPartyLookups");
client.DefaultRequestHeaders.TryAddWithoutValidation("Accept", "application/json");
client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json");
var response = await client.GetAsync($"https://mee6.xyz/api/plugins/levels/leaderboard/{GuildId}");
var mee6 = JsonConvert.DeserializeObject(await response.EnsureSuccessStatusCode().Content.ReadAsStringAsync());
return mee6 is null ? throw new NotFoundException() : mee6;
}
}