pipey 0.1.1

A lightweight HTTP-to-WebSocket event delivery service.
Documentation
use crate::configs::{ServerConfig, routes_config};
use crate::handlers::page_not_found;
use crate::models::AppState;
use crate::utils::init_check_env;
use actix_web::{App, HttpServer, dev::Server, web};

#[derive(Clone, Default)]
pub struct Pipey;

impl Pipey {
    pub async fn run_server() -> Result<Server, std::io::Error> {
        dotenvy::dotenv().ok();
        init_check_env();

        let redis_url = std::env::var("REDIS_URL").expect("Missing env variable REDIS_URL");
        let server_cfg = ServerConfig::from_env();
        let app_state = web::Data::new(AppState::new("node_1", &redis_url).await);

        let server = HttpServer::new(move || {
            App::new()
                .app_data(app_state.clone())
                .configure(routes_config)
                .default_service(web::route().to(page_not_found))
        })
        .bind((server_cfg.host, server_cfg.port))?
        .run();

        println!("Server running at http://127.0.0.1:8080/api/v001/");

        Ok(server)
    }
}