diff options
Diffstat (limited to 'server/src')
-rw-r--r-- | server/src/routes/mod.rs | 7 | ||||
-rw-r--r-- | server/src/routes/ui/node.rs | 2 | ||||
-rw-r--r-- | server/src/routes/userdata.rs (renamed from server/src/routes/progress.rs) | 19 |
3 files changed, 22 insertions, 6 deletions
diff --git a/server/src/routes/mod.rs b/server/src/routes/mod.rs index 4c7838d..c3299d3 100644 --- a/server/src/routes/mod.rs +++ b/server/src/routes/mod.rs @@ -6,9 +6,8 @@ use crate::{database::Database, routes::ui::error::MyResult}; use api::{r_api_account_login, r_api_node_raw, r_api_root, r_api_version}; use base64::Engine; -use jellybase::{CONF, federation::Federation}; +use jellybase::{federation::Federation, CONF}; use log::warn; -use progress::{r_player_progress, r_player_watched}; use rand::random; use rocket::{ catchers, config::SecretKey, fairing::AdHoc, fs::FileServer, get, http::Header, routes, Build, @@ -36,11 +35,12 @@ use ui::{ player::r_player, style::{r_assets_font, r_assets_js, r_assets_js_map, r_assets_style}, }; +use userdata::{r_node_userdata, r_player_progress, r_player_watched}; pub mod api; -pub mod progress; pub mod stream; pub mod ui; +pub mod userdata; #[macro_export] macro_rules! uri { @@ -93,6 +93,7 @@ pub fn build_rocket(database: Database, federation: Federation) -> Rocket<Build> r_assets_js, r_assets_js_map, r_stream, + r_node_userdata, r_player, r_player_progress, r_player_watched, diff --git a/server/src/routes/ui/node.rs b/server/src/routes/ui/node.rs index 795effa..adbe5b1 100644 --- a/server/src/routes/ui/node.rs +++ b/server/src/routes/ui/node.rs @@ -12,7 +12,7 @@ use crate::{ database::Database, routes::{ api::AcceptJson, - progress::{rocket_uri_macro_r_player_watched, UrlWatchedState}, + userdata::{rocket_uri_macro_r_player_watched, UrlWatchedState}, ui::{ account::session::Session, assets::AssetRole, diff --git a/server/src/routes/progress.rs b/server/src/routes/userdata.rs index fa6f844..2ded24a 100644 --- a/server/src/routes/progress.rs +++ b/server/src/routes/userdata.rs @@ -7,8 +7,10 @@ use super::ui::{account::session::Session, error::MyResult}; use crate::routes::ui::node::rocket_uri_macro_r_library_node; use anyhow::anyhow; use jellybase::database::Database; -use jellycommon::user::WatchedState; -use rocket::{post, response::Redirect, FromFormField, State, UriDisplayQuery}; +use jellycommon::user::{NodeUserData, WatchedState}; +use rocket::{ + get, post, response::Redirect, serde::json::Json, FromFormField, State, UriDisplayQuery, +}; #[derive(Debug, FromFormField, UriDisplayQuery)] pub enum UrlWatchedState { @@ -17,6 +19,19 @@ pub enum UrlWatchedState { Pending, } +#[get("/n/<id>/userdata")] +pub fn r_node_userdata( + session: Session, + db: &State<Database>, + id: &str, +) -> MyResult<Json<NodeUserData>> { + db.node + .get(&id.to_string())? + .ok_or(anyhow!("node does not exist"))?; + let key = (session.user.name.clone(), id.to_owned()); + Ok(Json(db.user_node.get(&key)?.unwrap_or_default())) +} + #[post("/n/<id>/watched?<state>")] pub async fn r_player_watched( session: Session, |