diff --git a/Configuration/AliExpressSettings.cs b/Configuration/AliExpressSettings.cs new file mode 100644 index 0000000..21359ef --- /dev/null +++ b/Configuration/AliExpressSettings.cs @@ -0,0 +1,7 @@ +namespace PersonalDataLogger.Configuration +{ + public sealed class AliExpressSettings + { + public string EmailAddress { get; set; } + } +} diff --git a/Program.cs b/Program.cs index 8e529bf..e7fbfbc 100644 --- a/Program.cs +++ b/Program.cs @@ -51,6 +51,7 @@ static IServiceProvider CreateIOC() PersonalLogManagerSettings personalLogManagerSettings = new(); ImapSettings imapSettings = new(); PersonalSettings personalSettings = new(); + AliExpressSettings aliExpressSettings = new(); NuciLoggerSettings loggerSettings = new(); IConfiguration config = new ConfigurationBuilder() @@ -60,13 +61,16 @@ static IServiceProvider CreateIOC() config.Bind(nameof(PersonalLogManagerSettings), personalLogManagerSettings); config.Bind(nameof(ImapSettings), imapSettings); config.Bind(nameof(PersonalSettings), personalSettings); + config.Bind(nameof(AliExpressSettings), aliExpressSettings); config.Bind(nameof(NuciLoggerSettings), loggerSettings); return new ServiceCollection() .AddSingleton(personalLogManagerSettings) .AddSingleton(imapSettings) .AddSingleton(personalSettings) + .AddSingleton(aliExpressSettings) .AddSingleton(loggerSettings) + .AddSingleton() .AddSingleton() .AddSingleton() .AddSingleton() diff --git a/Service/EmailWorker.cs b/Service/EmailWorker.cs index 9579c4f..576df80 100644 --- a/Service/EmailWorker.cs +++ b/Service/EmailWorker.cs @@ -11,6 +11,7 @@ namespace PersonalDataLogger.Service { public class EmailWorker( + IAliExpressProcessor aliExpressProcessor, IOpsGenieEmailProcessor opsGenieEmailProcessor, IEmailProcessor emailProcessor, ImapSettings imapSettings, @@ -85,7 +86,11 @@ EmailCheckpoint ProcessAvailableEmails(EmailCheckpoint checkpoint) new LogInfo(MyLogInfoKey.Subject, email.Subject), new LogInfo(MyLogInfoKey.Date, email.Timestamp)); - if (email.Sender.Contains("opsgenie")) + if (email.Sender.Contains("aliexpress")) + { + aliExpressProcessor.ProcessEmail(email); + } + else if (email.Sender.Contains("opsgenie")) { opsGenieEmailProcessor.ProcessEmail(email); } diff --git a/Service/Processors/AliExpressProcessor.cs b/Service/Processors/AliExpressProcessor.cs new file mode 100644 index 0000000..46939e3 --- /dev/null +++ b/Service/Processors/AliExpressProcessor.cs @@ -0,0 +1,30 @@ +using System.Collections.Generic; +using PersonalDataLogger.Client; +using PersonalDataLogger.Configuration; +using PersonalDataLogger.Service.Models; + +namespace PersonalDataLogger.Service.Processors +{ + public class AliExpressProcessor( + IPersonalLogManagerService personalLogManagerService, + AliExpressSettings settings) + : IAliExpressProcessor + { + const string PlatformName = "AliExpress"; + + public void ProcessEmail(AvailableEmail email) + { + if (email.Subject.Contains("Your AliExpress verification code")) + { + personalLogManagerService.SendPersonalLogToManager( + email.Timestamp, + "AccountLogin", + new Dictionary() + { + ["platform"] = PlatformName, + ["email_address"] = settings.EmailAddress + }); + } + } + } +} diff --git a/Service/Processors/IAliExpressProcessor.cs b/Service/Processors/IAliExpressProcessor.cs new file mode 100644 index 0000000..ea36eba --- /dev/null +++ b/Service/Processors/IAliExpressProcessor.cs @@ -0,0 +1,9 @@ +using PersonalDataLogger.Service.Models; + +namespace PersonalDataLogger.Service.Processors +{ + public interface IAliExpressProcessor + { + void ProcessEmail(AvailableEmail email); + } +} diff --git a/appsettings.json b/appsettings.json index b974e8f..1c4fe13 100644 --- a/appsettings.json +++ b/appsettings.json @@ -15,6 +15,9 @@ "personalSettings": { "employerName": "[[EMPLOYER_NAME]]" }, + "aliExpressSettings": { + "emailAddress": "[[ALIEXPRESS_EMAIL_ADDRESS]]" + }, "nuciLoggerSettings": { "minimumLevel": "Debug", "logFilePath": "logfile.log",