ForgeFlux/src/main.rs
Aravinth Manivannan 85d7d9d322
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
feat: OAuth request authoriation service
2024-05-04 22:48:40 +05:30

57 lines
1.6 KiB
Rust

use std::env;
use actix_web::{middleware, App, HttpServer};
mod db;
mod forge;
mod settings;
mod utils;
pub use crate::forge::auth::adapter::input::web::{services, ActixCtx, WebCtx};
pub use crate::forge::auth::adapter::out::{
db::DBAdapter,
forge::{forgejo::Forgejo, ForgeRepository},
};
#[actix_web::main]
async fn main() {
let settings = settings::Settings::new().unwrap();
if env::var("RUST_LOG").is_err() {
env::set_var("RUST_LOG", &settings.log);
}
{
// Settings::new() outputs logs, but since we are only setting up logger _after_ Settings is
// initialized, this dummy reinitialization will output logs.
settings::Settings::new().unwrap();
}
pretty_env_logger::init();
let forgejo = Forgejo::new(
settings.forges.forgejo.url.clone(),
settings.forges.forgejo.client_id.clone(),
settings.forges.forgejo.client_secret.clone(),
);
let forges = ForgeRepository::new(forgejo);
let db = DBAdapter::init(&settings.database.url).await;
db.migratable().migrate().await;
let ctx = WebCtx::new_actix_ctx(forges, db, settings.clone());
let socket_addr = settings.server.get_ip();
HttpServer::new(move || {
App::new()
.wrap(tracing_actix_web::TracingLogger::default())
.wrap(middleware::Compress::default())
.app_data(ctx.clone())
.wrap(
middleware::DefaultHeaders::new().add(("Permissions-Policy", "interest-cohort=()")),
)
.configure(services)
})
.bind(&socket_addr)
.unwrap()
.run()
.await
.unwrap();
}