Skip to main content

metadata/
metadata.rs

1use std::error::Error;
2use wireman_core::{
3    client::{call_unary_async, tls::TlsConfig},
4    descriptor::{RequestMessage, ResponseMessage},
5    ProtoDescriptor,
6};
7
8pub type Result<T> = std::result::Result<T, Box<dyn Error>>;
9
10#[tokio::main]
11async fn main() -> Result<()> {
12    let desc = ProtoDescriptor::new(
13        vec!["/Users/philippreiter/Rust/wireman/example"],
14        vec!["grpc_simple/debugger.proto"],
15    )?;
16    let service = &desc.get_services()[0];
17    let method = &desc.get_methods(service)[1];
18    println!("Service: {:}", service.full_name());
19    println!("Method:  {:}", method.full_name());
20
21    let mut req = desc.get_request(&method);
22    req.set_address("http://localhost:50051");
23
24    let resp = do_request(&req).await?;
25    println!("\nResponse:\n{:}", resp.message.to_json()?);
26
27    Ok(())
28}
29
30pub async fn do_request(req: &RequestMessage) -> Result<ResponseMessage> {
31    let tls_config = TlsConfig::native();
32    let resp = call_unary_async(req, Some(tls_config)).await?;
33    Ok(resp)
34}