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}