feat: red test implementation of email confirm
This commit is contained in:
parent
7eebcb12a2
commit
8045eb979e
8 changed files with 75 additions and 9 deletions
|
|
@ -33,13 +33,14 @@ impl TryFrom<FormData> for NewSubscriber {
|
|||
|
||||
#[tracing::instrument(
|
||||
name = "Send a confirmation email to a new subscriber",
|
||||
skip(email_client, new_subscriber)
|
||||
skip(email_client, new_subscriber, base_url)
|
||||
)]
|
||||
pub async fn send_confirmation_email(
|
||||
email_client: &EmailClient,
|
||||
new_subscriber: NewSubscriber,
|
||||
base_url: &str,
|
||||
) -> Result<(), reqwest::Error> {
|
||||
let confirmation_link = "https://my-api.com/subscriptions/confirm";
|
||||
let confirmation_link = format!("{}/subscriptions/confirm?subscription_token=mytoken", base_url);
|
||||
let plain_body = format!(
|
||||
"Welcome to our newsletter! Visit {} to confirm your subscription.",
|
||||
confirmation_link
|
||||
|
|
@ -57,7 +58,7 @@ pub async fn send_confirmation_email(
|
|||
// TODO: remove request_id?
|
||||
#[tracing::instrument(
|
||||
name = "Adding a new subscriber",
|
||||
skip(form, db_pool, email_client),
|
||||
skip(form, db_pool, email_client, base_url),
|
||||
fields(
|
||||
request_id = %Uuid::new_v4(),
|
||||
subscriber_email = %form.email,
|
||||
|
|
@ -68,6 +69,7 @@ pub async fn subscribe(
|
|||
State(AppState {
|
||||
db_pool,
|
||||
email_client,
|
||||
base_url,
|
||||
}): State<AppState>,
|
||||
Form(form): Form<FormData>,
|
||||
) -> Response {
|
||||
|
|
@ -80,7 +82,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();
|
||||
}
|
||||
if send_confirmation_email(&email_client, new_subscriber)
|
||||
if send_confirmation_email(&email_client, new_subscriber, &base_url.0)
|
||||
.await
|
||||
.is_err()
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue