caveman/gatherer/src/main.rs

58 lines
1.5 KiB
Rust
Raw Normal View History

2022-12-30 02:59:09 +01:00
use std::time::Duration;
use metrics_util::MetricKindMask;
use metrics_exporter_prometheus::PrometheusBuilder;
2022-11-09 19:03:03 +01:00
use cave::{
config::LoadConfig,
2022-11-16 19:12:25 +01:00
firehose::FirehoseFactory,
2022-11-15 00:45:02 +01:00
};
2022-11-05 20:51:18 +01:00
mod config;
2022-11-05 20:04:31 +01:00
mod trends;
2022-11-06 01:29:58 +01:00
mod html_template;
mod http_server;
2023-08-08 18:42:34 +02:00
mod oauth;
2022-11-05 20:04:31 +01:00
#[tokio::main]
async fn main() {
2022-11-05 20:51:18 +01:00
cave::init::exit_on_panic();
2022-12-01 01:39:38 +01:00
cave::init::init_logger(5556);
2022-11-05 20:51:18 +01:00
let config = config::Config::load();
2022-12-30 02:59:09 +01:00
let recorder = PrometheusBuilder::new()
.add_global_label("application", env!("CARGO_PKG_NAME"))
.idle_timeout(MetricKindMask::ALL, Some(Duration::from_secs(600)))
.install_recorder()
.unwrap();
2023-08-09 00:05:26 +02:00
let http_client = reqwest::Client::builder()
.timeout(Duration::from_secs(10))
.pool_max_idle_per_host(0)
.user_agent(
format!("{}/{} (+https://fedi.buzz/)", env!("CARGO_PKG_NAME"), env!("CARGO_PKG_VERSION"))
)
.build()
.expect("reqwest::Client");
2023-08-08 18:42:34 +02:00
cave::systemd::status("Connecting to database");
let db = cave::db::Database::connect(&config.database).await;
2022-11-05 20:51:18 +01:00
cave::systemd::status("Starting redis client");
let store = cave::store::Store::new(
8, config.redis.clone(), config.redis_password_file.clone()
).await;
2022-11-15 00:45:02 +01:00
let firehose_factory = FirehoseFactory::new(config.redis, config.redis_password_file);
2022-11-05 20:51:18 +01:00
2022-11-10 03:27:50 +01:00
let http = http_server::start(
2022-11-09 19:03:03 +01:00
config.listen_port,
2022-12-30 01:56:20 +01:00
store,
2023-08-08 18:42:34 +02:00
db,
2023-08-09 00:05:26 +02:00
http_client,
2022-11-15 00:45:02 +01:00
firehose_factory,
2022-12-30 02:59:09 +01:00
recorder,
2022-11-10 03:27:50 +01:00
);
cave::systemd::ready();
http.await;
2022-11-05 20:04:31 +01:00
}