t_web/
rpc.rs

1use crate::{
2    grpc_web_client::Client,
3    log::{info, instrument},
4};
5use http::Uri;
6use std::str::FromStr;
7use t_rpc::{Username, internal_rpc_client::InternalRpcClient};
8use tonic::Request;
9use tonic_web::GrpcWebClientLayer;
10use tower::ServiceBuilder;
11
12#[instrument(skip_all, err)]
13pub async fn get_username(username: String) -> Result<String, Box<dyn std::error::Error>> {
14    info!("browser rpc call");
15
16    let service = ServiceBuilder::new()
17        .layer(GrpcWebClientLayer::new())
18        .service(Client::new());
19
20    let uri = Uri::from_str("http://127.0.0.1:3000")?;
21    let mut client = InternalRpcClient::with_origin(service, uri);
22
23    let request = Request::new(Username { username });
24
25    let response = client.get_username(request).await?;
26
27    info!(?response);
28
29    Ok(response.into_inner().username)
30}