refactor: clean up subscription
This commit is contained in:
parent
90fc6abf19
commit
9a31080707
1 changed files with 25 additions and 15 deletions
|
|
@ -1,5 +1,6 @@
|
|||
use crate::domain::SubscriberEmail;
|
||||
use crate::domain::{NewSubscriber, SubscriberName};
|
||||
use crate::email_client::EmailClient;
|
||||
use crate::startup::AppState;
|
||||
use axum::extract::State;
|
||||
use axum::routing::post;
|
||||
|
|
@ -30,6 +31,29 @@ impl TryFrom<FormData> for NewSubscriber {
|
|||
}
|
||||
}
|
||||
|
||||
#[tracing::instrument(
|
||||
name = "Send a confirmation email to a new subscriber",
|
||||
skip(email_client, new_subscriber)
|
||||
)]
|
||||
pub async fn send_confirmation_email(
|
||||
email_client: &EmailClient,
|
||||
new_subscriber: NewSubscriber,
|
||||
) -> Result<(), reqwest::Error> {
|
||||
let confirmation_link = "https://my-api.com/subscriptions/confirm";
|
||||
let plain_body = format!(
|
||||
"Welcome to our newsletter! Visit {} to confirm your subscription.",
|
||||
confirmation_link
|
||||
);
|
||||
let html_body = format!(
|
||||
"Welcome to our newsletter!<br />\
|
||||
Click <a href=\"{}\">here</a> to confirm your subscription.",
|
||||
confirmation_link
|
||||
);
|
||||
email_client
|
||||
.send_email(new_subscriber.email, "Welcome!", &html_body, &plain_body)
|
||||
.await
|
||||
}
|
||||
|
||||
// TODO: remove request_id?
|
||||
#[tracing::instrument(
|
||||
name = "Adding a new subscriber",
|
||||
|
|
@ -56,21 +80,7 @@ pub async fn subscribe(
|
|||
if insert_subscriber(&db_pool, &new_subscriber).await.is_err() {
|
||||
return (StatusCode::INTERNAL_SERVER_ERROR, "Something went wrong.").into_response();
|
||||
}
|
||||
let confirmation_link = "https://my-api.com/subscriptions/confirm";
|
||||
if email_client
|
||||
.send_email(
|
||||
new_subscriber.email,
|
||||
"Welcome!",
|
||||
&format!(
|
||||
"Welcome to our newsletter!<br />\
|
||||
Click <a href=\"{}\">here</a> to confirm your subscription.",
|
||||
confirmation_link,
|
||||
),
|
||||
&format!(
|
||||
"Welcome to our newsletter! \nVisit {} to confirm your subscription.",
|
||||
confirmation_link,
|
||||
),
|
||||
)
|
||||
if send_confirmation_email(&email_client, new_subscriber)
|
||||
.await
|
||||
.is_err()
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue