Files
iot-cloud-api/src/main.rs
Tobias Maier 4fb7baf954
All checks were successful
Build Project / test (push) Successful in 5m53s
Added external URL
2025-02-09 16:00:42 +00:00

57 lines
1.6 KiB
Rust

use std::{env, path::PathBuf, process};
use actix_web::{web, App, HttpServer};
use database::Database;
use dotenvy::dotenv;
use log::{error, info};
use schemas::AppState;
mod database;
mod schemas;
mod util;
mod firmware_api;
mod device_telemetry_api;
#[actix_web::main]
async fn main() -> std::io::Result<()> {
dotenv().ok();
env_logger::init();
info!("Starting");
let db_url = match env::var("DATABASE_URL") {
Ok(url) => url,
Err(e) => {
error!("Failed reading DATABASE_URL: {e}");
process::exit(1);
}
};
let external_url = env::var("URL").unwrap_or("localhost".to_string());
info!("Connecting to Database {}", db_url);
let db = Database::init(&db_url).await;
db.init_db().await;
HttpServer::new(move || {
App::new()
.app_data(web::Data::new(AppState {
db: db.clone(),
firmwares_path: PathBuf::from("./fw"),
hostname: external_url.clone(),
}))
.app_data(web::PayloadConfig::new(256 * 1024 * 1024)) //256MB
.service(device_telemetry_api::receive_telemetry)
.service(device_telemetry_api::get_telemetry)
.service(device_telemetry_api::receive_value)
.service(device_telemetry_api::get_value)
.service(device_telemetry_api::get_devices)
.service(firmware_api::upload_firmware)
.service(firmware_api::get_firmware_json)
.service(firmware_api::serve_firmware)
})
.bind(("0.0.0.0", 8282))?
.run()
.await
}