From ed2b5a8911e46e9cc7242aff09b8fa61f210d185 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Fri, 16 Jun 2023 18:18:53 +0200 Subject: asset api --- server/src/routes/api/mod.rs | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) (limited to 'server/src/routes/api/mod.rs') diff --git a/server/src/routes/api/mod.rs b/server/src/routes/api/mod.rs index 8f7190e..102d8b8 100644 --- a/server/src/routes/api/mod.rs +++ b/server/src/routes/api/mod.rs @@ -7,7 +7,10 @@ pub mod error; use std::path::PathBuf; -use super::ui::account::{login_logic, LoginForm}; +use super::ui::{ + account::{login_logic, LoginForm}, + node::AssetRole, +}; use crate::{ database::Database, library::{Library, Node}, @@ -15,8 +18,17 @@ use crate::{ }; use anyhow::Context; use jellycommon::api::ApiNode; -use rocket::{get, http::CookieJar, post, response::Redirect, serde::json::Json, State}; +use log::info; +use rocket::{ + get, + http::{ContentType, CookieJar}, + post, + response::Redirect, + serde::json::Json, + State, +}; use serde_json::{json, Value}; +use tokio::fs::File; #[get("/api")] pub fn r_api_root() -> Redirect { @@ -38,8 +50,23 @@ pub fn r_api_account_login( Ok(json!({ "ok": true })) } +#[get("/api/assets/node/?")] +pub async fn r_api_assets_node( + _sess: Session, + path: PathBuf, + role: AssetRole, + library: &State, +) -> ApiResult<(ContentType, File)> { + let node = library + .nested_path(&path) + .context("retrieving library node")?; + let path = node.get_asset(library, role); + info!("loading asset from {path:?}"); + Ok((ContentType::WEBP, File::open(path).await?)) +} + #[get("/api/library/")] -pub fn r_api_library_node( +pub fn r_api_node( _sess: Session, path: PathBuf, library: &State, -- cgit v1.2.3-70-g09d2