diff --git a/apps/api/internal/api/handlers/email.go b/apps/api/internal/api/handlers/email.go index ec24e488..36834cd7 100644 --- a/apps/api/internal/api/handlers/email.go +++ b/apps/api/internal/api/handlers/email.go @@ -23,9 +23,9 @@ func NewEmailHandler(emailService *services.EmailService, logger zerolog.Logger) } type QueueEmailRequest struct { - To string `json:"to"` - From string `json:"from"` - Body string `json:"body"` + To []string `json:"to"` + From string `json:"from"` + Body string `json:"body"` } func (h *EmailHandler) QueueEmail(w http.ResponseWriter, r *http.Request) { @@ -35,24 +35,26 @@ func (h *EmailHandler) QueueEmail(w http.ResponseWriter, r *http.Request) { return } - if !email.IsValidEmail(req.To) || !email.IsValidEmail(req.From) { - res.SendError(w, http.StatusBadRequest, res.NewError("malformed_email", "To and/or From email is malformed or missing")) - return - } - if req.Body == "" { res.SendError(w, http.StatusBadRequest, res.NewError("missing_body", "Body is missing or is an empty string.")) return } - taskInfo, err := h.emailService.QueueSendEmail(req.To, req.From, req.Body) - if err != nil { - h.logger.Err(err).Msg("Failed to queue email sending from EmailHandler") - res.SendError(w, http.StatusInternalServerError, res.NewError("internal_err", "The server went kaput while queueing email sending")) - return - } + for _, to := range req.To { + if !email.IsValidEmail(to) || !email.IsValidEmail(req.From) { + res.SendError(w, http.StatusBadRequest, res.NewError("malformed_email", "To and/or From email is malformed or missing")) + return + } + + taskInfo, err := h.emailService.QueueSendEmail(to, req.From, req.Body) + if err != nil { + h.logger.Err(err).Msg("Failed to queue email sending from EmailHandler") + res.SendError(w, http.StatusInternalServerError, res.NewError("internal_err", "The server went kaput while queueing email sending")) + return + } - h.logger.Info().Str("TaskID", taskInfo.ID).Str("Task Queue", taskInfo.Queue).Str("Task Type", taskInfo.Type).Msg("Queued Send Email task!") + h.logger.Info().Str("TaskID", taskInfo.ID).Str("Task Queue", taskInfo.Queue).Str("Task Type", taskInfo.Type).Msg("Queued Send Email task!") + } w.WriteHeader(http.StatusCreated) }