diff --git a/ShareX.UploadersLib/UploaderFactory.cs b/ShareX.UploadersLib/UploaderFactory.cs index df0d15cb0..a6a4a14e3 100644 --- a/ShareX.UploadersLib/UploaderFactory.cs +++ b/ShareX.UploadersLib/UploaderFactory.cs @@ -24,41 +24,22 @@ You should have received a copy of the GNU General Public License #endregion License Information (GPL v3) using ShareX.HelpersLib; +using System.Collections.Generic; using System.Linq; namespace ShareX.UploadersLib { public static class UploaderFactory { - private static readonly ImageUploaderService[] imageUploaderServices = Helpers.GetInstances(); - private static readonly TextUploaderService[] textUploaderServices = Helpers.GetInstances(); - private static readonly FileUploaderService[] fileUploaderServices = Helpers.GetInstances(); - private static readonly URLShortenerService[] urlShortenerServices = Helpers.GetInstances(); - private static readonly URLSharingService[] urlSharingServices = Helpers.GetInstances(); + public static Dictionary ImageUploaderServices { get; } = CacheServices(); + public static Dictionary TextUploaderServices { get; } = CacheServices(); + public static Dictionary FileUploaderServices { get; } = CacheServices(); + public static Dictionary URLShortenerServices { get; } = CacheServices(); + public static Dictionary URLSharingServices { get; } = CacheServices(); - public static ImageUploaderService GetImageUploaderService(ImageDestination enumValue) + private static Dictionary CacheServices() where T2 : UploaderService { - return imageUploaderServices.First(x => x.EnumValue == enumValue); - } - - public static TextUploaderService GetTextUploaderService(TextDestination enumValue) - { - return textUploaderServices.First(x => x.EnumValue == enumValue); - } - - public static FileUploaderService GetFileUploaderService(FileDestination enumValue) - { - return fileUploaderServices.First(x => x.EnumValue == enumValue); - } - - public static URLShortenerService GetURLShortenerService(UrlShortenerType enumValue) - { - return urlShortenerServices.First(x => x.EnumValue == enumValue); - } - - public static URLSharingService GetURLSharingService(URLSharingServices enumValue) - { - return urlSharingServices.First(x => x.EnumValue == enumValue); + return Helpers.GetInstances().ToDictionary(x => x.EnumValue, x => x); } } } \ No newline at end of file diff --git a/ShareX.UploadersLib/UploadersConfigValidator.cs b/ShareX.UploadersLib/UploadersConfigValidator.cs index fa9f71b82..f0dd8fcc8 100644 --- a/ShareX.UploadersLib/UploadersConfigValidator.cs +++ b/ShareX.UploadersLib/UploadersConfigValidator.cs @@ -64,28 +64,28 @@ public static bool Validate(int index, UploadersConfig config) public static bool Validate(ImageDestination destination, UploadersConfig config) { if (destination == ImageDestination.FileUploader) return true; - return UploaderFactory.GetImageUploaderService(destination).CheckConfig(config); + return UploaderFactory.ImageUploaderServices[destination].CheckConfig(config); } public static bool Validate(TextDestination destination, UploadersConfig config) { if (destination == TextDestination.FileUploader) return true; - return UploaderFactory.GetTextUploaderService(destination).CheckConfig(config); + return UploaderFactory.TextUploaderServices[destination].CheckConfig(config); } public static bool Validate(FileDestination destination, UploadersConfig config) { - return UploaderFactory.GetFileUploaderService(destination).CheckConfig(config); + return UploaderFactory.FileUploaderServices[destination].CheckConfig(config); } public static bool Validate(UrlShortenerType destination, UploadersConfig config) { - return UploaderFactory.GetURLShortenerService(destination).CheckConfig(config); + return UploaderFactory.URLShortenerServices[destination].CheckConfig(config); } public static bool Validate(URLSharingServices destination, UploadersConfig config) { - return UploaderFactory.GetURLSharingService(destination).CheckConfig(config); + return UploaderFactory.URLSharingServices[destination].CheckConfig(config); } } } \ No newline at end of file diff --git a/ShareX/WorkerTask.cs b/ShareX/WorkerTask.cs index 4d0c96c9d..c8e08733d 100644 --- a/ShareX/WorkerTask.cs +++ b/ShareX/WorkerTask.cs @@ -75,7 +75,7 @@ public bool IsWorking private Image tempImage; private string tempText; private ThreadWorker threadWorker; - private Uploader uploader; + private GenericUploader uploader; private TaskReferenceHelper taskReferenceHelper; private static string lastSaveAsFolder; @@ -851,7 +851,7 @@ public UploadResult UploadData(IGenericUploaderService service, Stream stream, s return GetInvalidConfigResult(service); } - GenericUploader uploader = service.CreateUploader(Program.UploadersConfig, taskReferenceHelper); + uploader = service.CreateUploader(Program.UploadersConfig, taskReferenceHelper); if (uploader != null) { @@ -871,28 +871,28 @@ public UploadResult UploadData(IGenericUploaderService service, Stream stream, s public UploadResult UploadImage(Stream stream, string fileName) { - ImageUploaderService service = UploaderFactory.GetImageUploaderService(Info.TaskSettings.ImageDestination); + ImageUploaderService service = UploaderFactory.ImageUploaderServices[Info.TaskSettings.ImageDestination]; return UploadData(service, stream, fileName); } public UploadResult UploadText(Stream stream, string fileName) { - TextUploaderService service = UploaderFactory.GetTextUploaderService(Info.TaskSettings.TextDestination); + TextUploaderService service = UploaderFactory.TextUploaderServices[Info.TaskSettings.TextDestination]; return UploadData(service, stream, fileName); } public UploadResult UploadFile(Stream stream, string fileName) { - FileUploaderService service = UploaderFactory.GetFileUploaderService(Info.TaskSettings.GetFileDestinationByDataType(Info.DataType)); + FileUploaderService service = UploaderFactory.FileUploaderServices[Info.TaskSettings.GetFileDestinationByDataType(Info.DataType)]; return UploadData(service, stream, fileName); } public UploadResult ShortenURL(string url) { - URLShortenerService service = UploaderFactory.GetURLShortenerService(Info.TaskSettings.URLShortenerDestination); + URLShortenerService service = UploaderFactory.URLShortenerServices[Info.TaskSettings.URLShortenerDestination]; if (!service.CheckConfig(Program.UploadersConfig)) { @@ -913,7 +913,7 @@ public UploadResult ShareURL(string url) { if (!string.IsNullOrEmpty(url)) { - URLSharingService service = UploaderFactory.GetURLSharingService(Info.TaskSettings.URLSharingServiceDestination); + URLSharingService service = UploaderFactory.URLSharingServices[Info.TaskSettings.URLSharingServiceDestination]; if (!service.CheckConfig(Program.UploadersConfig)) {