wireman_core/client/
reflection.rs1use prost_types::FileDescriptorSet;
2use tonic::Code;
3
4use crate::{descriptor::ReflectionRequest, error::Error};
5
6mod v1;
7mod v1alpha;
8
9pub(crate) async fn build_file_descriptor_set(
11 request: ReflectionRequest,
12) -> Result<FileDescriptorSet, Error> {
13 let v1_result = v1::build_file_descriptor_set(request.clone()).await;
14 if let Err(Error::GrpcError(status)) = &v1_result {
15 if status.code == Code::Unimplemented {
16 match v1alpha::build_file_descriptor_set(request).await {
17 Ok(alpha_result) => return Ok(alpha_result),
18 Err(_) => return v1_result,
19 }
20 }
21 }
22 v1_result
23}