webui: add tide state

develop
Lux 3 years ago committed by Katharina Fey
parent 18f94a7246
commit dabcc84063
Signed by: kookie
GPG Key ID: F972AEEA2887D547
  1. 16
      .vscode/launch.json
  2. 1
      Cargo.lock
  3. 1
      sdk/irdest-sdk/src/lib.rs
  4. 1
      services/webui/Cargo.toml
  5. 25
      services/webui/src/lib.rs

@ -0,0 +1,16 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug",
"program": "${workspaceFolder}/<your program>",
"args": [],
"cwd": "${workspaceFolder}"
}
]
}

1
Cargo.lock generated

@ -1528,6 +1528,7 @@ version = "0.1.0"
dependencies = [
"async-std",
"irdest-core",
"irdest-sdk",
"irpc-broker",
"irpc-sdk",
"ratman-harness",

@ -35,6 +35,7 @@ use users::{UserAuth, UserProfile, UserUpdate};
/// this surface to get access to all irdest-core functions, thate are
/// transparently mapped to the underlying irdest-core instance
/// potentially running in a different process.
#[derive(Clone)]
pub struct IrdestSdk {
socket: Arc<RpcSocket>,
addr: String,

@ -8,6 +8,7 @@ edition = "2018"
[dependencies]
tide = "0.16"
irpc-sdk = { path = "../../rpc-core/irpc-sdk" }
irdest-sdk = { path = "../../sdk/irdest-sdk" }
tracing = "0.1"
[dev-dependencies]

@ -3,35 +3,48 @@
use irpc_sdk::{Capabilities, Identity, RpcSocket, Service};
use std::sync::Arc;
use tide::Server;
use irdest_sdk::IrdestSdk;
use tide::Request;
pub struct WebServer {
inner: Server<()>,
app: Server<State>,
rpc: Arc<RpcSocket>,
service_id: Identity,
}
#[derive(Clone)]
struct State {
sdk: IrdestSdk,
}
impl WebServer {
pub async fn new(addr: &str, port: u16) -> Self {
let mut inner = Server::new();
let mut serv = Service::new("org.irdest.webui", 1, "Webui.");
let rpc = RpcSocket::connect(addr, port).await.unwrap();
let mut app = tide::with_state(State {
sdk: IrdestSdk::connect(&serv).unwrap()
});
let service_id = serv
.register(&rpc, Capabilities::basic_json())
.await
.unwrap();
// Add routes here
inner.at("/").get(|_| async { Ok("Hello world") });
app.at("/").get(|req: Request<State>| async {
// irdest_sdk.users().create("blörp").await;
Ok("Hello world")
});
Self {
inner,
app,
rpc,
service_id,
}
}
pub async fn listen(self, bind: &str) {
self.inner.listen(bind).await.unwrap();
self.app.listen(bind).await.unwrap();
}
}

Loading…
Cancel
Save