diff --git a/backend/Cargo.lock b/backend/Cargo.lock index 80323f7..11a1466 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -807,9 +807,12 @@ dependencies = [ "futures 0.3.19", "jsonrpc-core", "jsonrpc-pubsub", + "jsonrpc-server-utils", "log", + "parity-tokio-ipc", "serde", "serde_json", + "tokio", "url", ] diff --git a/backend/Cargo.toml b/backend/Cargo.toml index 1a85e52..2a1e5ae 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -10,13 +10,16 @@ figment = "^0.10" jsonrpc-core = "~18.0" jsonrpc-derive = "~18.0" jsonrpc-ipc-server = "~18.0" -jsonrpc-core-client = "~18.0" serde = "^1.0" +[dependencies.jsonrpc-core-client] +version = "~18.0" +features = ["ipc"] + [dependencies.procfs] version = "^0.12" features = ["chrono"] [dependencies.rocket] version = "^0.5.0-rc.1" -features = ["json", "secrets", "tls"] +features = ["json", "secrets", "tls"] \ No newline at end of file diff --git a/backend/src/server/context.rs b/backend/src/server/context.rs new file mode 100644 index 0000000..a900070 --- /dev/null +++ b/backend/src/server/context.rs @@ -0,0 +1,5 @@ +use crate::rpc::gen_client::Client; + +pub struct Context { + pub rpc_client: Client, +} diff --git a/backend/src/server/mod.rs b/backend/src/server/mod.rs index e4aa81b..4ab6ea4 100644 --- a/backend/src/server/mod.rs +++ b/backend/src/server/mod.rs @@ -1,8 +1,11 @@ mod config; +mod context; mod routes; use config::Config; use argh::FromArgs; +use context::Context; +use jsonrpc_core_client::transports::ipc::connect; use rocket; use rocket::fairing::AdHoc; use rocket::figment::providers::{Env, Format, Serialized, Toml}; @@ -43,9 +46,14 @@ pub async fn main() -> Result<(), rocket::Error> { figment = figment.merge(("port", port)); } + let context = Context { + rpc_client: connect("weywot.sock").await.unwrap(), + }; + rocket::custom(figment) - .mount("/", rocket::routes![routes::hello::hello]) + .mount("/", rocket::routes![routes::status::get_status]) .attach(AdHoc::config::()) + .manage(context) .ignite() .await? .launch() diff --git a/backend/src/server/routes/mod.rs b/backend/src/server/routes/mod.rs index 152adf1..dacf634 100644 --- a/backend/src/server/routes/mod.rs +++ b/backend/src/server/routes/mod.rs @@ -1 +1,2 @@ pub mod hello; +pub mod status; diff --git a/backend/src/server/routes/status.rs b/backend/src/server/routes/status.rs index e69de29..8716f5b 100644 --- a/backend/src/server/routes/status.rs +++ b/backend/src/server/routes/status.rs @@ -0,0 +1,9 @@ +use crate::rpc::Status; +use crate::server::context::Context; +use rocket::State; +use rocket::serde::json::Json; + +#[rocket::get("/status")] +pub async fn get_status(state: &State) -> Json { + Json(state.rpc_client.status().await.unwrap()) +}