use std::time::Duration; use actix_web::{get, HttpResponse, Responder}; use chrono::Utc; use cyborgtime::format_duration; use serde::Serialize; /// Response for /love #[derive(Serialize)] struct InfoLove { unix_epoch: u32, } #[get("/love")] pub async fn love() -> impl Responder { HttpResponse::Ok().json(InfoLove { unix_epoch: 1_605_576_600, }) } /// Response for /backtofrance #[derive(Serialize)] struct InfoBTF { unix_epoch: u64, countdown: String, } #[get("/backtofrance")] pub async fn btf() -> impl Responder { let target = 1_736_618_100; let current_time: u64 = Utc::now().timestamp().try_into().unwrap(); let info = InfoBTF { unix_epoch: target, countdown: if current_time > target { "Already happened".to_owned() } else { let duration_epoch = target - current_time; let duration = Duration::from_secs(duration_epoch); format_duration(duration).to_string() }, }; HttpResponse::Ok().json(info) }