mod auth; mod provider; mod request_types; #[macro_use] extern crate rocket; use std::env; use rocket::serde::json::Json; use rocket::{Error, State}; use rocket::http::Status; use crate::provider::{PurelymailProvider, SMTPUserCredentials}; use crate::request_types::PasswordResetRequest; #[get("/")] fn index() -> &'static str { "Hello, world!" } #[get("/onboard/")] fn onboard(token: String) -> String { todo!() } #[post("/doResetPassword", data = "")] async fn user(data: Json, provider: &State) -> Result { provider.reset_password(&data.email, &data.new_password).await .map(|_| { String::from("Good") }) .or(Err(Status::BadRequest)) } #[launch] fn rocket() -> _ { let token = env::var("API_TOKEN").expect("API_TOKEN env var not set"); let smtp_webmaster_username = env::var("WEBMASTER_USERNAME") .expect("WEBMASTER_USERNAME env var not set"); let smtp_webmaster_password = env::var("WEBMASTER_PASSWORD") .expect("WEBMASTER_PASSWORD env var not set"); let provider: PurelymailProvider = PurelymailProvider::new( token, SMTPUserCredentials::new(&smtp_webmaster_username, &smtp_webmaster_password) ); rocket::build() .manage(provider) .mount("/", routes![index, onboard, user]) }