From 59e6e7a6feafaf1dada3054466d415cca047ca1a Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 2 Aug 2023 11:23:48 +0200 Subject: node api on the same route --- server/src/routes/ui/node.rs | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'server/src/routes/ui/node.rs') diff --git a/server/src/routes/ui/node.rs b/server/src/routes/ui/node.rs index e4bf329..93186bf 100644 --- a/server/src/routes/ui/node.rs +++ b/server/src/routes/ui/node.rs @@ -6,29 +6,37 @@ use super::{assets::rocket_uri_macro_r_item_assets, error::MyError, player::player_uri}; use crate::{ database::Database, - routes::ui::{ - account::session::Session, - assets::AssetRole, - layout::{DynLayoutPage, LayoutPage}, + routes::{ + api::AcceptJson, + ui::{ + account::session::Session, + assets::AssetRole, + layout::{DynLayoutPage, LayoutPage}, + }, }, uri, }; use anyhow::{anyhow, Context}; use jellycommon::{Node, NodeKind}; -use rocket::{get, State}; +use rocket::{get, serde::json::Json, Either, State}; #[get("/n/")] pub async fn r_library_node( _sess: Session, id: String, db: &State, -) -> Result, MyError> { + aj: AcceptJson, +) -> Result, Json>, MyError> { let node = db .node .get(&id) .context("retrieving library node")? .ok_or(anyhow!("node does not exist"))?; + if *aj { + return Ok(Either::Right(Json(node))); + } + let children = node .public .children @@ -43,14 +51,14 @@ pub async fn r_library_node( .into_iter() .collect(); - Ok(LayoutPage { + Ok(Either::Left(LayoutPage { title: node.public.title.to_string(), show_back: matches!(node.public.kind, NodeKind::Movie | NodeKind::Episode), content: markup::new! { @NodePage { node: &node, id: &id, children: &children } }, ..Default::default() - }) + })) } markup::define! { -- cgit v1.2.3-70-g09d2