use crate::session::{VtaEndpoint, resolve_vta_endpoint};
use super::error::ProvisionError;
#[derive(Clone, Debug)]
pub struct ResolvedVta {
pub vta_did: String,
pub mediator_did: Option<String>,
pub rest_url: Option<String>,
}
pub async fn resolve_vta(vta_did: &str) -> Result<ResolvedVta, ProvisionError> {
match resolve_vta_endpoint(vta_did)
.await
.map_err(|e| ProvisionError::Resolve {
vta_did: vta_did.to_string(),
message: e.to_string(),
})? {
VtaEndpoint::DIDComm {
vta_did,
mediator_did,
rest_url,
} => Ok(ResolvedVta {
vta_did,
mediator_did: Some(mediator_did),
rest_url,
}),
VtaEndpoint::Rest { url } => Ok(ResolvedVta {
vta_did: vta_did.to_string(),
mediator_did: None,
rest_url: Some(url),
}),
}
}