53 lines
1.2 KiB
Rust
53 lines
1.2 KiB
Rust
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)
|
|
}
|
|
|
|
#[get("/websites")]
|
|
pub async fn websites() -> impl Responder {
|
|
HttpResponse::Ok().json((
|
|
"http://www.bocal.cs.univ-paris8.fr/~akennel/",
|
|
"https://anri.up8.site/",
|
|
))
|
|
}
|