2757869176
Add contract validation, SMTP delivery results, terminal failure context, neutral development seeding, and local Docker setup. Ref: IT-1033
31 lines
930 B
C#
31 lines
930 B
C#
namespace HrynCo.NotificationService.Worker;
|
|
|
|
using HrynCo.NotificationService.Contracts.Messages;
|
|
using HrynCo.NotificationService.Worker.Services.EmailProcessing;
|
|
using Hrynco.RabbitMq;
|
|
|
|
internal static class SendEmailDeliveryValidator
|
|
{
|
|
public static string? GetValidationError(
|
|
SendEmailMessage message,
|
|
RabbitMqMessageContext context,
|
|
string supportedMessageType)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(context.MessageId))
|
|
return "AMQP MessageId is required.";
|
|
|
|
if (!string.Equals(context.MessageType, supportedMessageType, StringComparison.Ordinal))
|
|
return $"Unsupported AMQP message type '{context.MessageType ?? "<missing>"}'.";
|
|
|
|
try
|
|
{
|
|
SendEmailMessageValidator.Validate(message);
|
|
return null;
|
|
}
|
|
catch (InvalidDataException exception)
|
|
{
|
|
return exception.Message;
|
|
}
|
|
}
|
|
}
|