simple-web-app

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit df1a5a44600e1f0aa0820c59f32d2fc59a194734
parent cb0e3705551167533a63848c622300d72504375c
Author: Silas Brack <silasbrack@gmail.com>
Date:   Sat, 13 Jun 2026 13:35:40 +0200

refactor: use addr/smtp_addr instead of separate host+port fields

Config computes the full address once at startup. Handlers and
main.rs use the composed address directly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Diffstat:
Msrc/config.rs | 14++++++++------
Msrc/handlers/auth.rs | 2+-
Msrc/main.rs | 2+-
3 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/src/config.rs b/src/config.rs @@ -4,9 +4,8 @@ pub struct Config { pub db_path: String, pub jwt_secret: String, pub debug: bool, - pub port: u16, - pub smtp_host: String, - pub smtp_port: u16, + pub addr: String, + pub smtp_addr: String, pub smtp_from: String, pub site_url: String, } @@ -25,6 +24,10 @@ where impl Config { pub fn from_env() -> Self { + let port: u16 = require_parse("PORT"); + let smtp_host = require("SMTP_HOST"); + let smtp_port: u16 = require_parse("SMTP_PORT"); + Self { db_path: require("DB_PATH"), jwt_secret: { @@ -33,9 +36,8 @@ impl Config { bytes.iter().map(|b| format!("{:02x}", b)).collect() }, debug: require_parse("DEBUG"), - port: require_parse("PORT"), - smtp_host: require("SMTP_HOST"), - smtp_port: require_parse("SMTP_PORT"), + addr: format!("0.0.0.0:{port}"), + smtp_addr: format!("{smtp_host}:{smtp_port}"), smtp_from: require("SMTP_FROM"), site_url: require("SITE_URL"), } diff --git a/src/handlers/auth.rs b/src/handlers/auth.rs @@ -39,7 +39,7 @@ fn send_verification_email(state: &AppState, email: &str, token: &str) -> Result let verify_url = format!("{}/verify-email?token={}", state.config.site_url, token); - let mut stream = TcpStream::connect(format!("{}:{}", state.config.smtp_host, state.config.smtp_port)) + let mut stream = TcpStream::connect(&*state.config.smtp_addr) .map_err(|e| format!("SMTP connect failed: {e}"))?; stream .set_read_timeout(Some(std::time::Duration::from_secs(10))) diff --git a/src/main.rs b/src/main.rs @@ -31,8 +31,8 @@ async fn async_main() -> Result<(), Box<dyn std::error::Error>> { eprintln!("Starting server with DEBUG={}", config.debug); eprintln!("Database path: {}", config.db_path); - let addr = format!("0.0.0.0:{}", config.port); let db = Database::new(&config.db_path)?; + let addr = config.addr.clone(); let state = AppState::new(config, db); let app = routes::create_router(state);