arc::Context::get¶
Synopsis¶
pub fn get(&self, path: &str, sid: &str) -> SimpleFuture<Response>;
Send a GET request to a connected device
Parameters¶
Parameter | Description |
---|---|
path: &str | URL of the request |
sid: &str | Serial number of the device for which to receive the request |
Examples¶
Example using executor
#![feature(rustc_private)]
#![feature(proc_macro_hygiene)]
#![feature(decl_macro)]
#![feature(async_closure)]
use futures::prelude::*;
use futures::stream::StreamExt;
use std::error::Error;
#[async_attributes::main]
async fn main() -> Result<(), Box<dyn Error>> {
let net = linq_network::arc::Context::new();
// Get a serial number from a connected device
let (serial, _) = net
.events()
.filter_map(|e| match e {
linq_network::Event::Heartbeat(s) => future::ready(Some(s)),
_ => future::ready(None),
})
.take(1)
.into_future()
.await;
// Request some about data
if let Some(serial) = serial {
let response = net
.get("/ATX/about", &serial)
.await?
.result?;
}
}
Example route based on rocket.rs
#[post("/proxy/<id>/about", format = "json")]
async fn proxy_route(net: State<'_, AtxNet>, id:String) -> Result<content::Json<String>, Status> {
match net.get("/ATX/about", &id).await {
Ok(response) => match response.result {
Ok(v) => Ok(content::Json(v)),
Err(e) => Err(Status::new(e.to_http(), "")),
},
Err(_) => Err(Status::new(400,"")),
}
}