karton/src/endpoints/pastalist.rs
2022-10-12 17:13:21 +02:00

36 lines
848 B
Rust

use actix_web::{get, web, HttpResponse};
use askama::Template;
use crate::args::{Args, ARGS};
use crate::pasta::Pasta;
use crate::util::misc::remove_expired;
use crate::AppState;
#[derive(Template)]
#[template(path = "pastalist.html")]
struct PastaListTemplate<'a> {
pastas: &'a Vec<Pasta>,
args: &'a Args,
}
#[get("/pastalist")]
pub async fn list(data: web::Data<AppState>) -> HttpResponse {
if ARGS.no_listing {
return HttpResponse::Found()
.append_header(("Location", format!("{}/", ARGS.public_path)))
.finish();
}
let mut pastas = data.pastas.lock().unwrap();
remove_expired(&mut pastas);
HttpResponse::Ok().content_type("text/html").body(
PastaListTemplate {
pastas: &pastas,
args: &ARGS,
}
.render()
.unwrap(),
)
}