Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions Configuration/AliExpressSettings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace PersonalDataLogger.Configuration
{
public sealed class AliExpressSettings
{
public string EmailAddress { get; set; }
}
}
4 changes: 4 additions & 0 deletions Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -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<IAliExpressProcessor, AliExpressProcessor>()
.AddSingleton<IOpsGenieEmailProcessor, OpsGenieEmailProcessor>()
.AddSingleton<IEmailProcessor, EmailProcessor>()
.AddSingleton<IEmailWorker, EmailWorker>()
Expand Down
7 changes: 6 additions & 1 deletion Service/EmailWorker.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
namespace PersonalDataLogger.Service
{
public class EmailWorker(
IAliExpressProcessor aliExpressProcessor,
IOpsGenieEmailProcessor opsGenieEmailProcessor,
IEmailProcessor emailProcessor,
ImapSettings imapSettings,
Expand Down Expand Up @@ -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);
}
Expand Down
30 changes: 30 additions & 0 deletions Service/Processors/AliExpressProcessor.cs
Original file line number Diff line number Diff line change
@@ -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<string, string>()
{
["platform"] = PlatformName,
["email_address"] = settings.EmailAddress
});
}
}
}
}
9 changes: 9 additions & 0 deletions Service/Processors/IAliExpressProcessor.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
using PersonalDataLogger.Service.Models;

namespace PersonalDataLogger.Service.Processors
{
public interface IAliExpressProcessor
{
void ProcessEmail(AvailableEmail email);
}
}
3 changes: 3 additions & 0 deletions appsettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
"personalSettings": {
"employerName": "[[EMPLOYER_NAME]]"
},
"aliExpressSettings": {
"emailAddress": "[[ALIEXPRESS_EMAIL_ADDRESS]]"
},
"nuciLoggerSettings": {
"minimumLevel": "Debug",
"logFilePath": "logfile.log",
Expand Down