reflection/
reflection.rs

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