interactive intro to open social at-me.zzstoatzz.io
at ci-setup 43 lines 1.3 kB view raw
1use actix_session::{SessionMiddleware, config::PersistentSession, storage::CookieSessionStore}; 2use actix_web::{App, HttpServer, cookie::{Key, time::Duration}, middleware, web}; 3 4mod oauth; 5mod routes; 6mod templates; 7 8#[actix_web::main] 9async fn main() -> std::io::Result<()> { 10 env_logger::init(); 11 12 let client = oauth::create_oauth_client(); 13 14 println!("starting server at http://localhost:8080"); 15 16 HttpServer::new(move || { 17 App::new() 18 .wrap(middleware::Logger::default()) 19 .wrap( 20 SessionMiddleware::builder( 21 CookieSessionStore::default(), 22 Key::from(&[0; 64]), 23 ) 24 .cookie_secure(false) 25 .session_lifecycle( 26 PersistentSession::default() 27 .session_ttl(Duration::days(30)) 28 ) 29 .build(), 30 ) 31 .app_data(web::Data::new(client.clone())) 32 .service(routes::index) 33 .service(routes::login) 34 .service(routes::callback) 35 .service(routes::client_metadata) 36 .service(routes::logout) 37 .service(routes::restore_session) 38 .service(routes::favicon) 39 }) 40 .bind(("0.0.0.0", 8080))? 41 .run() 42 .await 43}