aboutsummaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/src/routes.rs3
-rw-r--r--server/src/ui/assets.rs20
2 files changed, 21 insertions, 2 deletions
diff --git a/server/src/routes.rs b/server/src/routes.rs
index 4a875f4..334fb39 100644
--- a/server/src/routes.rs
+++ b/server/src/routes.rs
@@ -18,7 +18,7 @@ use crate::{
log::{r_admin_log, r_admin_log_stream},
r_admin_dashboard,
},
- assets::r_image,
+ assets::{r_image, r_image_fallback_person},
error::{r_api_catch, r_catch},
home::r_home,
node::r_node,
@@ -95,6 +95,7 @@ pub(super) fn build_rocket(state: Arc<State>) -> Rocket<Build> {
// r_admin_users,
// r_items,
r_image,
+ r_image_fallback_person,
r_assets_font,
r_assets_js_map,
r_assets_js,
diff --git a/server/src/ui/assets.rs b/server/src/ui/assets.rs
index 91bb5e2..5903b83 100644
--- a/server/src/ui/assets.rs
+++ b/server/src/ui/assets.rs
@@ -6,7 +6,10 @@
use super::error::MyResult;
use crate::{request_info::RequestInfo, responders::cache::CacheControlImage};
use anyhow::Context;
-use rocket::{get, http::ContentType};
+use jellycache::HashKey;
+use jellycommon::routes::u_image;
+use jellyimport::generate_person_fallback;
+use rocket::{get, http::ContentType, response::Redirect};
use std::path::PathBuf;
use tokio::task::spawn_blocking;
@@ -34,6 +37,21 @@ pub async fn r_image(
Ok((ContentType::AVIF, CacheControlImage(encoded)))
}
+#[get("/image_fallback/person/<name>?<size>")]
+pub async fn r_image_fallback_person(
+ ri: RequestInfo<'_>,
+ name: &str,
+ size: Option<usize>,
+) -> MyResult<Redirect> {
+ let path = ri
+ .state
+ .cache
+ .store(format!("fallback/person/{}.image", HashKey(name)), || {
+ generate_person_fallback(name)
+ })?;
+ Ok(Redirect::found(u_image(&path, size.unwrap_or(2048))))
+}
+
// #[get("/n/<id>/image/<slot>?<size>")]
// pub async fn r_item_poster(
// session: A<Session>,