From 820ace12b11af6ca542038af3f54eab9dad954d8 Mon Sep 17 00:00:00 2001 From: Kim Altintop Date: Wed, 16 Oct 2024 19:49:42 +0200 Subject: [PATCH] Remove sendgrid (#1860) --- Cargo.lock | 15 ------ Cargo.toml | 1 - crates/client-api/src/lib.rs | 6 --- crates/core/Cargo.toml | 1 - crates/core/src/lib.rs | 1 - crates/core/src/sendgrid_controller.rs | 63 -------------------------- crates/standalone/src/lib.rs | 7 --- docker-compose-release.yml | 2 - docker-compose.yml | 2 - 9 files changed, 98 deletions(-) delete mode 100644 crates/core/src/sendgrid_controller.rs diff --git a/Cargo.lock b/Cargo.lock index 978d56caa3..ff3f0f317b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3960,20 +3960,6 @@ dependencies = [ "serde", ] -[[package]] -name = "sendgrid" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b3e6f961e931130444f970c2af8cb203deea0ffd09bb6d2e79c05a36bc6ef9" -dependencies = [ - "data-encoding", - "reqwest", - "serde", - "serde_json", - "thiserror", - "url", -] - [[package]] name = "serde" version = "1.0.210" @@ -4545,7 +4531,6 @@ dependencies = [ "rustc-demangle", "rustc-hash", "scopeguard", - "sendgrid", "serde", "serde_json", "serde_path_to_error", diff --git a/Cargo.toml b/Cargo.toml index 85e567be20..b9a0f641a4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -201,7 +201,6 @@ rustyline = { version = "12.0.0", features = [] } scoped-tls = "1.0.1" scopeguard = "1.1.0" second-stack = "0.3" -sendgrid = "0.21" serde = { version = "1.0.136", features = ["derive"] } serde_json = { version = "1.0.87", features = ["raw_value"] } serde_path_to_error = "0.1.9" diff --git a/crates/client-api/src/lib.rs b/crates/client-api/src/lib.rs index dc90e58e4e..826cefcf1a 100644 --- a/crates/client-api/src/lib.rs +++ b/crates/client-api/src/lib.rs @@ -11,7 +11,6 @@ use spacetimedb::energy::{EnergyBalance, EnergyQuanta}; use spacetimedb::host::{HostController, UpdateDatabaseResult}; use spacetimedb::identity::Identity; use spacetimedb::messages::control_db::{Database, HostType, Node, Replica}; -use spacetimedb::sendgrid_controller::SendGridController; use spacetimedb_client_api_messages::name::{DomainName, InsertDomainResult, RegisterTldResult, Tld}; pub mod auth; @@ -27,7 +26,6 @@ pub trait NodeDelegate: Send + Sync { fn gather_metrics(&self) -> Vec; fn host_controller(&self) -> &HostController; fn client_actor_index(&self) -> &ClientActorIndex; - fn sendgrid_controller(&self) -> Option<&SendGridController>; /// Return a JWT decoding key for verifying credentials. fn public_key(&self) -> &DecodingKey; @@ -252,10 +250,6 @@ impl NodeDelegate for Arc { fn private_key(&self) -> &EncodingKey { (**self).private_key() } - - fn sendgrid_controller(&self) -> Option<&SendGridController> { - (**self).sendgrid_controller() - } } pub fn log_and_500(e: impl std::fmt::Display) -> ErrorResponse { diff --git a/crates/core/Cargo.toml b/crates/core/Cargo.toml index a124de55d6..91a23e587a 100644 --- a/crates/core/Cargo.toml +++ b/crates/core/Cargo.toml @@ -72,7 +72,6 @@ regex.workspace = true rustc-demangle.workspace = true rustc-hash.workspace = true scopeguard.workspace = true -sendgrid.workspace = true serde.workspace = true serde_json.workspace = true serde_path_to_error.workspace = true diff --git a/crates/core/src/lib.rs b/crates/core/src/lib.rs index 267fb63ed7..e4d68a9b64 100644 --- a/crates/core/src/lib.rs +++ b/crates/core/src/lib.rs @@ -37,7 +37,6 @@ pub mod execution_context; pub mod host; pub mod module_host_context; pub mod replica_context; -pub mod sendgrid_controller; pub mod startup; pub mod subscription; pub mod util; diff --git a/crates/core/src/sendgrid_controller.rs b/crates/core/src/sendgrid_controller.rs deleted file mode 100644 index 763e22cf13..0000000000 --- a/crates/core/src/sendgrid_controller.rs +++ /dev/null @@ -1,63 +0,0 @@ -use sendgrid::v3::{Email, Personalization, SGMap}; - -#[derive(Clone)] -pub struct SendGridController { - sender: sendgrid::v3::Sender, - sendgrid_sender: Email, -} - -const AUTH_URL: &str = "https://spacetimedb.net/auth"; - -impl SendGridController { - /// Get a SendGridController, pulling from environment variables, returning None if the env vars aren't present. - pub fn new() -> Option { - match (std::env::var("SENDGRID_API_KEY"), std::env::var("SENDGRID_SENDER")) { - (Ok(api_key), Ok(sendgrid_sender)) => Some(SendGridController { - sender: sendgrid::v3::Sender::new(api_key), - sendgrid_sender: Email::new(sendgrid_sender), - }), - _ => { - log::warn!("SENDGRID_API_KEY or SENDGRID_SENDER env variables not set, SendGrid is disabled."); - None - } - } - } - - /// # Description - /// - /// Sends a recovery email to the provided `email` address. - /// - /// # Arguments - /// * `email` - The email to send the recovery email to - /// * `code` - The recovery code to send - /// * `identity` - The identity the user is trying to recover - /// * `link` - Whether or not this request originated from the website. Typically if a user is - /// attempting to login to the website, we will send them a link to click on instead - /// of giving them a recovery code. - pub async fn send_recovery_email( - &self, - email: &str, - code: &str, - identity: &str, - link: bool, - ) -> Result<(), anyhow::Error> { - let mut data = SGMap::new(); - data.insert( - "link".to_string(), - if link { - url::Url::parse_with_params(AUTH_URL, [("email", email), ("code", code), ("identity", identity)]) - .unwrap() - .into() - } else { - format!("Your recovery code: {}", code) - }, - ); - let personalization = Personalization::new(Email::new(email)); - let message = sendgrid::v3::Message::new(self.sendgrid_sender.clone()) - .set_subject("Login to SpacetimeDB") - .set_template_id("d-70a7cea2bf8941a5909919fcf904d687") - .add_personalization(personalization.add_dynamic_template_data(data)); - self.sender.send(&message).await?; - Ok(()) - } -} diff --git a/crates/standalone/src/lib.rs b/crates/standalone/src/lib.rs index c2d5b7348e..b45fcdcbf4 100644 --- a/crates/standalone/src/lib.rs +++ b/crates/standalone/src/lib.rs @@ -22,7 +22,6 @@ use spacetimedb::energy::{EnergyBalance, EnergyQuanta}; use spacetimedb::host::{DiskStorage, HostController, UpdateDatabaseResult}; use spacetimedb::identity::Identity; use spacetimedb::messages::control_db::{Database, Node, Replica}; -use spacetimedb::sendgrid_controller::SendGridController; use spacetimedb::stdb_path; use spacetimedb::worker_metrics::WORKER_METRICS; use spacetimedb_client_api_messages::name::{DomainName, InsertDomainResult, RegisterTldResult, Tld}; @@ -172,12 +171,6 @@ impl spacetimedb_client_api::NodeDelegate for StandaloneEnv { fn private_key(&self) -> &EncodingKey { &self.private_key } - - /// Standalone SpacetimeDB does not support SendGrid as a means to - /// reissue authentication tokens. - fn sendgrid_controller(&self) -> Option<&SendGridController> { - None - } } impl spacetimedb_client_api::ControlStateReadAccess for StandaloneEnv { diff --git a/docker-compose-release.yml b/docker-compose-release.yml index 4d31d1b358..71ed7dc8ab 100644 --- a/docker-compose-release.yml +++ b/docker-compose-release.yml @@ -25,8 +25,6 @@ services: environment: RUST_BACKTRACE: 1 ENV: release - SENDGRID_API_KEY: - SENDGRID_SENDER: # Turn on core dumps, hopefully. ulimits: core: diff --git a/docker-compose.yml b/docker-compose.yml index ede0c42da9..331282e1ef 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -36,8 +36,6 @@ services: SPACETIMEDB_TRACY: 1 RUST_BACKTRACE: 1 ENV: dev - SENDGRID_API_KEY: - SENDGRID_SENDER: networks: - spacetimedb_default