/* This file is part of jellything (https://codeberg.org/metamuffin/jellything) which is licensed under the GNU Affero General Public License (version 3); see /COPYING. Copyright (C) 2026 metamuffin */ use super::ui::error::MyResult; use rocket::{get, post, response::Redirect, serde::json::Json}; use serde_json::{Value, json}; #[get("/api")] pub fn r_api_root() -> Redirect { Redirect::moved("https://jellything.metamuffin.org/book/api.html#jellything-http-api") } #[get("/version")] pub fn r_version() -> &'static str { env!("CARGO_PKG_VERSION") } // #[get("/translations")] // pub fn r_translations( // lang: AcceptLanguage, // aj: AcceptJson, // ) -> Either>, String> { // let AcceptLanguage(lang) = lang; // let table = get_translation_table(&lang); // if *aj { // Either::Left(Json(table)) // } else { // let mut s = String::new(); // for (k, v) in table { // s += k; // s += "="; // s += v; // s += "\n"; // } // Either::Right(s) // } // } #[post("/api/create_session", data = "")] pub fn r_api_account_login(data: Json) -> MyResult { let token = login_logic( &data.username, &data.password, data.expire, data.drop_permissions.clone(), )?; Ok(json!(token)) } #[get("/nodes_modified?")] pub fn r_nodes_modified_since(session: A, since: u64) -> MyResult>> { let nodes = get_nodes_modified_since(&session.0, since)?; Ok(Json(nodes)) }