Fixed the api issue so that it works now
This commit is contained in:
parent
927c377822
commit
e136278f26
1 changed files with 52 additions and 34 deletions
|
|
@ -1,3 +1,4 @@
|
||||||
|
use crate::gui::log_panel::log_message;
|
||||||
use axum::http::HeaderValue;
|
use axum::http::HeaderValue;
|
||||||
use http_body_util::Full;
|
use http_body_util::Full;
|
||||||
use hyper::body::Bytes;
|
use hyper::body::Bytes;
|
||||||
|
|
@ -18,29 +19,35 @@ pub async fn handle(
|
||||||
.body(Full::new(Bytes::from("403 Forbidden".to_string())))
|
.body(Full::new(Bytes::from("403 Forbidden".to_string())))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
let mut path_parts = path.split("/");
|
|
||||||
let (status, content, body_text) = match path_parts.nth(1).unwrap() {
|
// Collect path parts into a vector to avoid iterator consumption issues
|
||||||
|
let path_parts: Vec<&str> = path.split("/").collect();
|
||||||
|
|
||||||
|
// path_parts[0] is empty (before first /), path_parts[1] should be "api", path_parts[2] is the endpoint
|
||||||
|
let (status, content, body_text) = if path_parts.len() >= 3 {
|
||||||
|
match path_parts[2] {
|
||||||
"app_state" => (StatusCode::OK, "application/json", {
|
"app_state" => (StatusCode::OK, "application/json", {
|
||||||
let json = APP_STATE.lock().unwrap().clone();
|
let json = APP_STATE.lock().unwrap().clone();
|
||||||
json.to_json().to_string()
|
json.to_json().to_string()
|
||||||
}),
|
}),
|
||||||
"users" => (StatusCode::OK, "application/json", {
|
"users" => (StatusCode::OK, "application/json", {
|
||||||
if path_parts.nth(2).is_some() {
|
// Check for sub-endpoints like /api/users/add, /api/users/get, etc.
|
||||||
if path_parts.nth(2).unwrap() == "add" {
|
if path_parts.len() >= 4 {
|
||||||
"{}".to_string()
|
match path_parts[3] {
|
||||||
} else if path_parts.nth(2).unwrap() == "remove" {
|
"add" => "{}".to_string(),
|
||||||
"{}".to_string()
|
"remove" => "{}".to_string(),
|
||||||
} else if path_parts.nth(2).unwrap() == "get" {
|
"get" => {
|
||||||
let users = user_manager::get_users();
|
let users = user_manager::get_users();
|
||||||
let mut json = JsonValue::new_array();
|
let mut json = JsonValue::new_array();
|
||||||
for user in users {
|
for user in users {
|
||||||
let _ = json.push(user.to_json());
|
let _ = json.push(user.to_json());
|
||||||
}
|
}
|
||||||
json.to_string()
|
json.to_string()
|
||||||
} else {
|
}
|
||||||
"{}".to_string()
|
_ => "{}".to_string(),
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// Default: return all users
|
||||||
let users = user_manager::get_users();
|
let users = user_manager::get_users();
|
||||||
let mut json = JsonValue::new_array();
|
let mut json = JsonValue::new_array();
|
||||||
for user in users {
|
for user in users {
|
||||||
|
|
@ -61,11 +68,22 @@ pub async fn handle(
|
||||||
CONFIG.lock().unwrap().config.to_string()
|
CONFIG.lock().unwrap().config.to_string()
|
||||||
}),
|
}),
|
||||||
|
|
||||||
_ => (
|
_ => {
|
||||||
|
log_message(format!("Unknown API endpoint: {}", path));
|
||||||
|
(
|
||||||
StatusCode::NOT_FOUND,
|
StatusCode::NOT_FOUND,
|
||||||
"application/json",
|
"application/json",
|
||||||
"404 Not Found".to_string(),
|
"404 Not Found".to_string(),
|
||||||
),
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log_message(format!("Invalid API path: {}", path));
|
||||||
|
(
|
||||||
|
StatusCode::NOT_FOUND,
|
||||||
|
"application/json",
|
||||||
|
"404 Not Found".to_string(),
|
||||||
|
)
|
||||||
};
|
};
|
||||||
let body = Full::new(Bytes::from(body_text.to_string()));
|
let body = Full::new(Bytes::from(body_text.to_string()));
|
||||||
HttpResponse::builder()
|
HttpResponse::builder()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue