scufflecloud_email/services/
email.rs

1use ext_traits::{RequestExt, ResultExt};
2
3use crate::services::EmailSvc;
4use crate::{aws_ses, email_builder};
5
6#[async_trait::async_trait]
7impl<G: email_traits::Global> pb::scufflecloud::email::v1::email_service_server::EmailService for EmailSvc<G> {
8    async fn send_email(
9        &self,
10        req: tonic::Request<pb::scufflecloud::email::v1::SendEmailRequest>,
11    ) -> Result<tonic::Response<()>, tonic::Status> {
12        let global = &req.global::<G>()?;
13
14        let raw_email = email_builder::build_raw_email(req.into_inner())?;
15        aws_ses::send_email(global, raw_email)
16            .await
17            .into_tonic_internal_err("failed to send email with AWS SES")?;
18
19        Ok(tonic::Response::new(()))
20    }
21}