diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/FriendsController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/FriendsController.cs index 92098c38..7a0f7154 100644 --- a/ProjectLighthouse.Servers.GameServer/Controllers/FriendsController.cs +++ b/ProjectLighthouse.Servers.GameServer/Controllers/FriendsController.cs @@ -1,7 +1,6 @@ #nullable enable using LBPUnion.ProjectLighthouse.Database; using LBPUnion.ProjectLighthouse.Extensions; -using LBPUnion.ProjectLighthouse.Helpers; using LBPUnion.ProjectLighthouse.Servers.GameServer.Types.Users; using LBPUnion.ProjectLighthouse.StorableLists.Stores; using LBPUnion.ProjectLighthouse.Types.Entities.Profile; diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/Resources/PhotosController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/Resources/PhotosController.cs index 9aa60bed..4986025f 100644 --- a/ProjectLighthouse.Servers.GameServer/Controllers/Resources/PhotosController.cs +++ b/ProjectLighthouse.Servers.GameServer/Controllers/Resources/PhotosController.cs @@ -3,7 +3,6 @@ using Discord; using LBPUnion.ProjectLighthouse.Configuration; using LBPUnion.ProjectLighthouse.Database; using LBPUnion.ProjectLighthouse.Extensions; -using LBPUnion.ProjectLighthouse.Files; using LBPUnion.ProjectLighthouse.Helpers; using LBPUnion.ProjectLighthouse.Logging; using LBPUnion.ProjectLighthouse.Types.Entities.Level; diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/Slots/PublishController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/Slots/PublishController.cs index a600b8d7..e1b4c9b0 100644 --- a/ProjectLighthouse.Servers.GameServer/Controllers/Slots/PublishController.cs +++ b/ProjectLighthouse.Servers.GameServer/Controllers/Slots/PublishController.cs @@ -1,6 +1,5 @@ #nullable enable using System.Diagnostics; -using System.Runtime.CompilerServices; using LBPUnion.ProjectLighthouse.Configuration; using LBPUnion.ProjectLighthouse.Database; using LBPUnion.ProjectLighthouse.Extensions; @@ -17,7 +16,6 @@ using LBPUnion.ProjectLighthouse.Types.Users; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Logging.Configuration; namespace LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers.Slots; diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/UserController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/UserController.cs index 4ff1aa46..98e8ea66 100644 --- a/ProjectLighthouse.Servers.GameServer/Controllers/UserController.cs +++ b/ProjectLighthouse.Servers.GameServer/Controllers/UserController.cs @@ -3,7 +3,6 @@ using System.Text.Json; using LBPUnion.ProjectLighthouse.Database; using LBPUnion.ProjectLighthouse.Extensions; using LBPUnion.ProjectLighthouse.Files; -using LBPUnion.ProjectLighthouse.Helpers; using LBPUnion.ProjectLighthouse.Logging; using LBPUnion.ProjectLighthouse.Servers.GameServer.Types.Users; using LBPUnion.ProjectLighthouse.Types.Entities.Level; diff --git a/ProjectLighthouse.Servers.Website/Captcha/CaptchaService.cs b/ProjectLighthouse.Servers.Website/Captcha/CaptchaService.cs new file mode 100644 index 00000000..5b4a0d9b --- /dev/null +++ b/ProjectLighthouse.Servers.Website/Captcha/CaptchaService.cs @@ -0,0 +1,61 @@ +using LBPUnion.ProjectLighthouse.Configuration; +using LBPUnion.ProjectLighthouse.Configuration.ConfigurationCategories; +using LBPUnion.ProjectLighthouse.Extensions; +using LBPUnion.ProjectLighthouse.Logging; +using LBPUnion.ProjectLighthouse.Types.Logging; +using Microsoft.Extensions.Primitives; +using Newtonsoft.Json.Linq; + +namespace LBPUnion.ProjectLighthouse.Servers.Website.Captcha; + +public class CaptchaService : ICaptchaService +{ + private readonly HttpClient client; + + public CaptchaService(HttpClient client) + { + this.client = client; + } + + public async Task VerifyCaptcha(HttpRequest request) + { + if (!ServerConfiguration.Instance.Captcha.CaptchaEnabled) return true; + + string keyName = ServerConfiguration.Instance.Captcha.Type switch + { + CaptchaType.HCaptcha => "h-captcha-response", + CaptchaType.ReCaptcha => "g-recaptcha-response", + _ => throw new ArgumentOutOfRangeException(nameof(request), + @$"Unknown captcha type: {ServerConfiguration.Instance.Captcha.Type}"), + }; + + bool gotCaptcha = request.Form.TryGetValue(keyName, out StringValues values); + if (!gotCaptcha) return false; + + string? captchaToken = values[0]; + if (captchaToken == null) return false; + + List> payload = new() + { + new KeyValuePair("secret", ServerConfiguration.Instance.Captcha.Secret), + new KeyValuePair("response", captchaToken), + }; + + try + { + using HttpResponseMessage response = + await this.client.PostAsync("siteverify", new FormUrlEncodedContent(payload)); + if (!response.IsSuccessStatusCode) return false; + + string responseBody = await response.Content.ReadAsStringAsync(); + + // We only really care about the success result, so we just parse that + return bool.Parse(JObject.Parse(responseBody)["success"]?.ToString() ?? "false"); + } + catch (Exception ex) + { + Logger.Error(ex.ToDetailedException(), LogArea.HTTP); + } + return false; + } +} \ No newline at end of file diff --git a/ProjectLighthouse.Servers.Website/Captcha/ICaptchaService.cs b/ProjectLighthouse.Servers.Website/Captcha/ICaptchaService.cs new file mode 100644 index 00000000..e40ee7c3 --- /dev/null +++ b/ProjectLighthouse.Servers.Website/Captcha/ICaptchaService.cs @@ -0,0 +1,6 @@ +namespace LBPUnion.ProjectLighthouse.Servers.Website.Captcha; + +public interface ICaptchaService +{ + Task VerifyCaptcha(HttpRequest request); +} \ No newline at end of file diff --git a/ProjectLighthouse.Servers.Website/Pages/Login/LoginForm.cshtml.cs b/ProjectLighthouse.Servers.Website/Pages/Login/LoginForm.cshtml.cs index ebcc4a56..47f919e1 100644 --- a/ProjectLighthouse.Servers.Website/Pages/Login/LoginForm.cshtml.cs +++ b/ProjectLighthouse.Servers.Website/Pages/Login/LoginForm.cshtml.cs @@ -3,10 +3,10 @@ using System.Web; using JetBrains.Annotations; using LBPUnion.ProjectLighthouse.Configuration; using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Extensions; using LBPUnion.ProjectLighthouse.Helpers; using LBPUnion.ProjectLighthouse.Localization.StringLists; using LBPUnion.ProjectLighthouse.Logging; +using LBPUnion.ProjectLighthouse.Servers.Website.Captcha; using LBPUnion.ProjectLighthouse.Servers.Website.Pages.Layouts; using LBPUnion.ProjectLighthouse.Types.Entities.Profile; using LBPUnion.ProjectLighthouse.Types.Entities.Token; @@ -18,8 +18,12 @@ namespace LBPUnion.ProjectLighthouse.Servers.Website.Pages.Login; public class LoginForm : BaseLayout { - public LoginForm(DatabaseContext database) : base(database) - {} + private readonly ICaptchaService captchaService; + + public LoginForm(DatabaseContext database, ICaptchaService captchaService) : base(database) + { + this.captchaService = captchaService; + } public string? Error { get; private set; } @@ -38,7 +42,7 @@ public class LoginForm : BaseLayout return this.Page(); } - if (!await this.Request.CheckCaptchaValidity()) + if (!await this.captchaService.VerifyCaptcha(this.Request)) { this.Error = this.Translate(ErrorStrings.CaptchaFailed); return this.Page(); diff --git a/ProjectLighthouse.Servers.Website/Pages/Login/RegisterForm.cshtml.cs b/ProjectLighthouse.Servers.Website/Pages/Login/RegisterForm.cshtml.cs index 90207eb7..00627e05 100644 --- a/ProjectLighthouse.Servers.Website/Pages/Login/RegisterForm.cshtml.cs +++ b/ProjectLighthouse.Servers.Website/Pages/Login/RegisterForm.cshtml.cs @@ -2,9 +2,9 @@ using System.Diagnostics.CodeAnalysis; using JetBrains.Annotations; using LBPUnion.ProjectLighthouse.Configuration; using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Extensions; using LBPUnion.ProjectLighthouse.Helpers; using LBPUnion.ProjectLighthouse.Localization.StringLists; +using LBPUnion.ProjectLighthouse.Servers.Website.Captcha; using LBPUnion.ProjectLighthouse.Servers.Website.Pages.Layouts; using LBPUnion.ProjectLighthouse.Types.Entities.Profile; using LBPUnion.ProjectLighthouse.Types.Entities.Token; @@ -15,8 +15,12 @@ namespace LBPUnion.ProjectLighthouse.Servers.Website.Pages.Login; public class RegisterForm : BaseLayout { - public RegisterForm(DatabaseContext database) : base(database) - { } + private readonly ICaptchaService captchaService; + + public RegisterForm(DatabaseContext database, ICaptchaService captchaService) : base(database) + { + this.captchaService = captchaService; + } public string? Error { get; private set; } @@ -68,7 +72,7 @@ public class RegisterForm : BaseLayout return this.Page(); } - if (!await this.Request.CheckCaptchaValidity()) + if (!await this.captchaService.VerifyCaptcha(this.Request)) { this.Error = this.Translate(ErrorStrings.CaptchaFailed); return this.Page(); diff --git a/ProjectLighthouse.Servers.Website/Startup/WebsiteStartup.cs b/ProjectLighthouse.Servers.Website/Startup/WebsiteStartup.cs index 453f8829..88789749 100644 --- a/ProjectLighthouse.Servers.Website/Startup/WebsiteStartup.cs +++ b/ProjectLighthouse.Servers.Website/Startup/WebsiteStartup.cs @@ -1,8 +1,11 @@ using System.Globalization; using System.Net; +using LBPUnion.ProjectLighthouse.Configuration; +using LBPUnion.ProjectLighthouse.Configuration.ConfigurationCategories; using LBPUnion.ProjectLighthouse.Database; using LBPUnion.ProjectLighthouse.Localization; using LBPUnion.ProjectLighthouse.Middlewares; +using LBPUnion.ProjectLighthouse.Servers.Website.Captcha; using LBPUnion.ProjectLighthouse.Servers.Website.Middlewares; using Microsoft.AspNetCore.HttpOverrides; using Microsoft.AspNetCore.Localization; @@ -44,6 +47,20 @@ public class WebsiteStartup services.AddDbContext(); + services.AddHttpClient("CaptchaAPI", + client => + { + Uri captchaUri = ServerConfiguration.Instance.Captcha.Type switch + { + CaptchaType.HCaptcha => new Uri("https://hcaptcha.com"), + CaptchaType.ReCaptcha => new Uri("https://www.google.com/recaptcha/api/"), + _ => throw new ArgumentOutOfRangeException(nameof(client)), + }; + client.BaseAddress = captchaUri; + client.Timeout = TimeSpan.FromSeconds(5); + client.DefaultRequestHeaders.Add("User-Agent", "Project Lighthouse"); + }); + services.Configure ( options => diff --git a/ProjectLighthouse/Extensions/RequestExtensions.cs b/ProjectLighthouse/Extensions/RequestExtensions.cs index 9b979c00..d85c4421 100644 --- a/ProjectLighthouse/Extensions/RequestExtensions.cs +++ b/ProjectLighthouse/Extensions/RequestExtensions.cs @@ -1,36 +1,12 @@ #nullable enable -using System; -using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; -using System.Net.Http; using System.Text.RegularExpressions; -using System.Threading.Tasks; -using LBPUnion.ProjectLighthouse.Configuration; -using LBPUnion.ProjectLighthouse.Configuration.ConfigurationCategories; using Microsoft.AspNetCore.Http; -using Microsoft.Extensions.Primitives; using Microsoft.Net.Http.Headers; -using Newtonsoft.Json.Linq; namespace LBPUnion.ProjectLighthouse.Extensions; public static partial class RequestExtensions { - static RequestExtensions() - { - Uri captchaUri = ServerConfiguration.Instance.Captcha.Type switch - { - CaptchaType.HCaptcha => new Uri("https://hcaptcha.com"), - CaptchaType.ReCaptcha => new Uri("https://www.google.com/recaptcha/api/"), - _ => throw new ArgumentOutOfRangeException(), - }; - - client = new HttpClient - { - BaseAddress = captchaUri, - }; - } - #region Mobile Checking // yoinked and adapted from https://stackoverflow.com/a/68641796 @@ -42,51 +18,4 @@ public static partial class RequestExtensions public static bool IsMobile(this HttpRequest request) => MobileCheckRegex().IsMatch(request.Headers[HeaderNames.UserAgent].ToString()); #endregion - - #region Captcha - - private static readonly HttpClient client; - - [SuppressMessage("ReSharper", "ArrangeObjectCreationWhenTypeNotEvident")] - private static async Task verifyCaptcha(string? token) - { - if (!ServerConfiguration.Instance.Captcha.CaptchaEnabled) return true; - - if (token == null) return false; - - List> payload = new() - { - new("secret", ServerConfiguration.Instance.Captcha.Secret), - new("response", token), - }; - - HttpResponseMessage response = await client.PostAsync("siteverify", new FormUrlEncodedContent(payload)); - - response.EnsureSuccessStatusCode(); - - string responseBody = await response.Content.ReadAsStringAsync(); - - // We only really care about the success result, nothing else that hcaptcha sends us, so lets only parse that. - bool success = bool.Parse(JObject.Parse(responseBody)["success"]?.ToString() ?? "false"); - return success; - } - - public static async Task CheckCaptchaValidity(this HttpRequest request) - { - if (!ServerConfiguration.Instance.Captcha.CaptchaEnabled) return true; - - string keyName = ServerConfiguration.Instance.Captcha.Type switch - { - CaptchaType.HCaptcha => "h-captcha-response", - CaptchaType.ReCaptcha => "g-recaptcha-response", - _ => throw new ArgumentOutOfRangeException(nameof(request), @$"Unknown captcha type: {ServerConfiguration.Instance.Captcha.Type}"), - }; - - bool gotCaptcha = request.Form.TryGetValue(keyName, out StringValues values); - if (!gotCaptcha) return false; - - return await verifyCaptcha(values[0]); - } - #endregion - } \ No newline at end of file diff --git a/ProjectLighthouse/Types/Serialization/Author.cs b/ProjectLighthouse/Types/Serialization/Author.cs index dedd8f9f..7de0599a 100644 --- a/ProjectLighthouse/Types/Serialization/Author.cs +++ b/ProjectLighthouse/Types/Serialization/Author.cs @@ -1,5 +1,4 @@ using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; namespace LBPUnion.ProjectLighthouse.Types.Serialization; diff --git a/ProjectLighthouse/Types/Serialization/CategoryListResponse.cs b/ProjectLighthouse/Types/Serialization/CategoryListResponse.cs index 6f09605b..2edb440f 100644 --- a/ProjectLighthouse/Types/Serialization/CategoryListResponse.cs +++ b/ProjectLighthouse/Types/Serialization/CategoryListResponse.cs @@ -1,6 +1,5 @@ using System.Collections.Generic; using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; namespace LBPUnion.ProjectLighthouse.Types.Serialization; diff --git a/ProjectLighthouse/Types/Serialization/CommentListResponse.cs b/ProjectLighthouse/Types/Serialization/CommentListResponse.cs index 2e533a0b..35d9023e 100644 --- a/ProjectLighthouse/Types/Serialization/CommentListResponse.cs +++ b/ProjectLighthouse/Types/Serialization/CommentListResponse.cs @@ -1,6 +1,5 @@ using System.Collections.Generic; using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; namespace LBPUnion.ProjectLighthouse.Types.Serialization; diff --git a/ProjectLighthouse/Types/Serialization/GameCategory.cs b/ProjectLighthouse/Types/Serialization/GameCategory.cs index 0b577298..3bd0af02 100644 --- a/ProjectLighthouse/Types/Serialization/GameCategory.cs +++ b/ProjectLighthouse/Types/Serialization/GameCategory.cs @@ -1,5 +1,4 @@ using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; using LBPUnion.ProjectLighthouse.Types.Levels; namespace LBPUnion.ProjectLighthouse.Types.Serialization; diff --git a/ProjectLighthouse/Types/Serialization/GameComment.cs b/ProjectLighthouse/Types/Serialization/GameComment.cs index 62c23e79..a2c0b5bc 100644 --- a/ProjectLighthouse/Types/Serialization/GameComment.cs +++ b/ProjectLighthouse/Types/Serialization/GameComment.cs @@ -3,7 +3,6 @@ using System.Linq; using System.Threading.Tasks; using System.Xml.Serialization; using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Serialization; using LBPUnion.ProjectLighthouse.Types.Entities.Profile; using Microsoft.EntityFrameworkCore; diff --git a/ProjectLighthouse/Types/Serialization/GameDeveloperSlot.cs b/ProjectLighthouse/Types/Serialization/GameDeveloperSlot.cs index 8188d3e5..d149dfe3 100644 --- a/ProjectLighthouse/Types/Serialization/GameDeveloperSlot.cs +++ b/ProjectLighthouse/Types/Serialization/GameDeveloperSlot.cs @@ -3,7 +3,6 @@ using System.Threading.Tasks; using System.Xml.Serialization; using LBPUnion.ProjectLighthouse.Database; using LBPUnion.ProjectLighthouse.Helpers; -using LBPUnion.ProjectLighthouse.Serialization; using LBPUnion.ProjectLighthouse.Types.Entities.Profile; using LBPUnion.ProjectLighthouse.Types.Levels; using Microsoft.EntityFrameworkCore; diff --git a/ProjectLighthouse/Types/Serialization/GameDeveloperVideos.cs b/ProjectLighthouse/Types/Serialization/GameDeveloperVideos.cs index bbee5297..0eb90051 100644 --- a/ProjectLighthouse/Types/Serialization/GameDeveloperVideos.cs +++ b/ProjectLighthouse/Types/Serialization/GameDeveloperVideos.cs @@ -1,5 +1,4 @@ using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; namespace LBPUnion.ProjectLighthouse.Types.Serialization; diff --git a/ProjectLighthouse/Types/Serialization/GameGriefReport.cs b/ProjectLighthouse/Types/Serialization/GameGriefReport.cs index 8d981c57..eeee52ea 100644 --- a/ProjectLighthouse/Types/Serialization/GameGriefReport.cs +++ b/ProjectLighthouse/Types/Serialization/GameGriefReport.cs @@ -1,5 +1,4 @@ using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; using LBPUnion.ProjectLighthouse.Types.Entities.Moderation; using LBPUnion.ProjectLighthouse.Types.Moderation.Reports; diff --git a/ProjectLighthouse/Types/Serialization/GamePhotoSubject.cs b/ProjectLighthouse/Types/Serialization/GamePhotoSubject.cs index 64ada65c..94cbd50c 100644 --- a/ProjectLighthouse/Types/Serialization/GamePhotoSubject.cs +++ b/ProjectLighthouse/Types/Serialization/GamePhotoSubject.cs @@ -1,5 +1,4 @@ using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; using LBPUnion.ProjectLighthouse.Types.Entities.Profile; namespace LBPUnion.ProjectLighthouse.Types.Serialization; diff --git a/ProjectLighthouse/Types/Serialization/GamePlaylist.cs b/ProjectLighthouse/Types/Serialization/GamePlaylist.cs index 8dae34aa..5ced447c 100644 --- a/ProjectLighthouse/Types/Serialization/GamePlaylist.cs +++ b/ProjectLighthouse/Types/Serialization/GamePlaylist.cs @@ -7,7 +7,6 @@ using System.Threading.Tasks; using System.Xml.Serialization; using LBPUnion.ProjectLighthouse.Configuration; using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Serialization; using LBPUnion.ProjectLighthouse.Types.Entities.Level; using Microsoft.EntityFrameworkCore; diff --git a/ProjectLighthouse/Types/Serialization/GameScore.cs b/ProjectLighthouse/Types/Serialization/GameScore.cs index a76f032b..7addcf22 100644 --- a/ProjectLighthouse/Types/Serialization/GameScore.cs +++ b/ProjectLighthouse/Types/Serialization/GameScore.cs @@ -1,7 +1,6 @@ using System.ComponentModel; using System.Linq; using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; using LBPUnion.ProjectLighthouse.Types.Entities.Level; namespace LBPUnion.ProjectLighthouse.Types.Serialization; diff --git a/ProjectLighthouse/Types/Serialization/GameUser.cs b/ProjectLighthouse/Types/Serialization/GameUser.cs index 90c32e80..83e04ac2 100644 --- a/ProjectLighthouse/Types/Serialization/GameUser.cs +++ b/ProjectLighthouse/Types/Serialization/GameUser.cs @@ -1,5 +1,4 @@ -using System; -using System.ComponentModel; +using System.ComponentModel; using System.Linq; using System.Threading.Tasks; using System.Xml.Serialization; diff --git a/ProjectLighthouse/Types/Serialization/GenericPlaylistResponse.cs b/ProjectLighthouse/Types/Serialization/GenericPlaylistResponse.cs index 4ae5c3d4..ba85d8c8 100644 --- a/ProjectLighthouse/Types/Serialization/GenericPlaylistResponse.cs +++ b/ProjectLighthouse/Types/Serialization/GenericPlaylistResponse.cs @@ -1,7 +1,6 @@ using System.Collections.Generic; using System.ComponentModel; using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; namespace LBPUnion.ProjectLighthouse.Types.Serialization; diff --git a/ProjectLighthouse/Types/Serialization/GenericUserResponse.cs b/ProjectLighthouse/Types/Serialization/GenericUserResponse.cs index 0d011dd2..1f398644 100644 --- a/ProjectLighthouse/Types/Serialization/GenericUserResponse.cs +++ b/ProjectLighthouse/Types/Serialization/GenericUserResponse.cs @@ -1,7 +1,6 @@ using System.Collections.Generic; using System.ComponentModel; using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; namespace LBPUnion.ProjectLighthouse.Types.Serialization; diff --git a/ProjectLighthouse/Types/Serialization/IconList.cs b/ProjectLighthouse/Types/Serialization/IconList.cs index d9be3858..87a6f6cb 100644 --- a/ProjectLighthouse/Types/Serialization/IconList.cs +++ b/ProjectLighthouse/Types/Serialization/IconList.cs @@ -1,6 +1,5 @@ using System.Collections.Generic; using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; namespace LBPUnion.ProjectLighthouse.Types.Serialization; diff --git a/ProjectLighthouse/Types/Serialization/MinimalUserListResponse.cs b/ProjectLighthouse/Types/Serialization/MinimalUserListResponse.cs index ae213c3b..c289bdc0 100644 --- a/ProjectLighthouse/Types/Serialization/MinimalUserListResponse.cs +++ b/ProjectLighthouse/Types/Serialization/MinimalUserListResponse.cs @@ -1,6 +1,5 @@ using System.Collections.Generic; using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; namespace LBPUnion.ProjectLighthouse.Types.Serialization; diff --git a/ProjectLighthouse/Types/Serialization/NpHandle.cs b/ProjectLighthouse/Types/Serialization/NpHandle.cs index 6d7b973c..c7952936 100644 --- a/ProjectLighthouse/Types/Serialization/NpHandle.cs +++ b/ProjectLighthouse/Types/Serialization/NpHandle.cs @@ -1,6 +1,5 @@ using System.ComponentModel; using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; namespace LBPUnion.ProjectLighthouse.Types.Serialization; diff --git a/ProjectLighthouse/Types/Serialization/PhotoListResponse.cs b/ProjectLighthouse/Types/Serialization/PhotoListResponse.cs index 0a951143..a8d64028 100644 --- a/ProjectLighthouse/Types/Serialization/PhotoListResponse.cs +++ b/ProjectLighthouse/Types/Serialization/PhotoListResponse.cs @@ -1,6 +1,5 @@ using System.Collections.Generic; using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; namespace LBPUnion.ProjectLighthouse.Types.Serialization; diff --git a/ProjectLighthouse/Types/Serialization/PhotoSlot.cs b/ProjectLighthouse/Types/Serialization/PhotoSlot.cs index ea0654e8..c4699720 100644 --- a/ProjectLighthouse/Types/Serialization/PhotoSlot.cs +++ b/ProjectLighthouse/Types/Serialization/PhotoSlot.cs @@ -1,7 +1,6 @@ #nullable enable using System.ComponentModel; using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; using LBPUnion.ProjectLighthouse.Types.Levels; namespace LBPUnion.ProjectLighthouse.Types.Serialization; diff --git a/ProjectLighthouse/Types/Serialization/PlanetStatsResponse.cs b/ProjectLighthouse/Types/Serialization/PlanetStatsResponse.cs index c72d3abf..0457d282 100644 --- a/ProjectLighthouse/Types/Serialization/PlanetStatsResponse.cs +++ b/ProjectLighthouse/Types/Serialization/PlanetStatsResponse.cs @@ -1,5 +1,4 @@ using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; namespace LBPUnion.ProjectLighthouse.Types.Serialization; diff --git a/ProjectLighthouse/Types/Serialization/PlaylistResponse.cs b/ProjectLighthouse/Types/Serialization/PlaylistResponse.cs index 9cae8eee..81a46003 100644 --- a/ProjectLighthouse/Types/Serialization/PlaylistResponse.cs +++ b/ProjectLighthouse/Types/Serialization/PlaylistResponse.cs @@ -1,6 +1,5 @@ using System.Collections.Generic; using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; namespace LBPUnion.ProjectLighthouse.Types.Serialization; diff --git a/ProjectLighthouse/Types/Serialization/ReviewResponse.cs b/ProjectLighthouse/Types/Serialization/ReviewResponse.cs index 6434589f..a15915dd 100644 --- a/ProjectLighthouse/Types/Serialization/ReviewResponse.cs +++ b/ProjectLighthouse/Types/Serialization/ReviewResponse.cs @@ -1,7 +1,6 @@ using System.Collections.Generic; using System.ComponentModel; using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; namespace LBPUnion.ProjectLighthouse.Types.Serialization; diff --git a/ProjectLighthouse/Types/Serialization/ReviewSlot.cs b/ProjectLighthouse/Types/Serialization/ReviewSlot.cs index 3072ce16..f4148adf 100644 --- a/ProjectLighthouse/Types/Serialization/ReviewSlot.cs +++ b/ProjectLighthouse/Types/Serialization/ReviewSlot.cs @@ -1,5 +1,4 @@ using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; using LBPUnion.ProjectLighthouse.Types.Levels; namespace LBPUnion.ProjectLighthouse.Types.Serialization; diff --git a/ProjectLighthouse/Types/Serialization/ScoreboardResponse.cs b/ProjectLighthouse/Types/Serialization/ScoreboardResponse.cs index f09b2758..f9c45763 100644 --- a/ProjectLighthouse/Types/Serialization/ScoreboardResponse.cs +++ b/ProjectLighthouse/Types/Serialization/ScoreboardResponse.cs @@ -1,7 +1,6 @@ using System.Collections.Generic; using System.ComponentModel; using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; namespace LBPUnion.ProjectLighthouse.Types.Serialization; diff --git a/ProjectLighthouse/Types/Serialization/TelemetryConfigResponse.cs b/ProjectLighthouse/Types/Serialization/TelemetryConfigResponse.cs index 4daead0a..7e51366b 100644 --- a/ProjectLighthouse/Types/Serialization/TelemetryConfigResponse.cs +++ b/ProjectLighthouse/Types/Serialization/TelemetryConfigResponse.cs @@ -1,5 +1,4 @@ using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; namespace LBPUnion.ProjectLighthouse.Types.Serialization; diff --git a/ProjectLighthouse/Types/Serialization/UserListResponse.cs b/ProjectLighthouse/Types/Serialization/UserListResponse.cs index 69d74475..e5a15630 100644 --- a/ProjectLighthouse/Types/Serialization/UserListResponse.cs +++ b/ProjectLighthouse/Types/Serialization/UserListResponse.cs @@ -1,7 +1,6 @@ using System.Collections.Generic; using System.ComponentModel; using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; namespace LBPUnion.ProjectLighthouse.Types.Serialization;