Menu
Public repository / master
AkurAI-Notes / crates/notes-api/src/handlers/meta.rs
Latest change 21fd83f4a6eb769a0ee34aa30f721b5cdc6881af - Fix IDP OAuth: split public issuer vs internal loopback URL for token exchange by Claude Code
use crate::router_setup::{internal_error, json_response, NotesState};
use akurai_http::{Request, Response};
use akurai_json::Value;
use std::sync::{Arc, Mutex};
pub fn meta_route(
state: Arc<Mutex<NotesState>>,
) -> Box<dyn Fn(&Request) -> Response + Send + Sync> {
Box::new(move |_req: &Request| {
let state = match state.lock() {
Ok(s) => s,
Err(_) => return internal_error("lock poisoned"),
};
let objects: Vec<Value> = state
.objects
.iter()
.map(|obj| {
let fields: Vec<Value> = obj
.fields
.iter()
.map(|f| {
Value::Object(vec![
("name".into(), Value::Str(f.name.into())),
("type".into(), Value::Str(f.field_type.into())),
("required".into(), Value::Bool(f.required)),
("embed".into(), Value::Bool(f.embed)),
])
})
.collect();
Value::Object(vec![
("name".into(), Value::Str(obj.name.into())),
("fields".into(), Value::Array(fields)),
])
})
.collect();
json_response(Value::Object(vec![
("version".into(), Value::Str("0.0.1".into())),
("objects".into(), Value::Array(objects)),
]))
})
}