Skip to content
mod config;
mod files;
mod routes;
mod views;

use actix_web::{App, HttpServer, web};
use config::AppConfig;
use routes::{
    index, serve_fixi_js, serve_fixi_skill, serve_moxi_skill, serve_paxi_skill, serve_rexi_skill,
    serve_ssexi_skill, serve_tachyons,
};

use crate::routes::up;

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    let config = AppConfig::from_env();
    let base_url = config.base_url();
    let port = config.port.parse().unwrap_or(80);
    println!("Starting fixi CDN server on {}", base_url);

    HttpServer::new(move || {
        App::new()
            .app_data(web::Data::new(config.clone()))
            .service(index)
            .service(serve_tachyons)
            .service(serve_fixi_js)
            .service(serve_fixi_skill)
            .service(serve_moxi_skill)
            .service(serve_paxi_skill)
            .service(serve_ssexi_skill)
            .service(serve_rexi_skill)
            .service(up)
    })
    .bind(("0.0.0.0", port))?
    .run()
    .await
}