use super::VtaClient;
#[cfg(feature = "provision-integration")]
use super::Transport;
#[cfg(feature = "provision-integration")]
use crate::error::VtaError;
impl VtaClient {
#[cfg(feature = "provision-integration")]
pub async fn provision_integration(
&self,
req: crate::provision_integration::http::ProvisionIntegrationRequest,
) -> Result<crate::provision_integration::http::ProvisionIntegrationResponse, VtaError> {
match &self.transport {
Transport::Rest {
client,
base_url,
auth,
} => {
Self::ensure_token_valid(client, base_url, auth).await?;
let token = auth.lock().await.token.clone();
let http_req = client
.post(format!("{base_url}/bootstrap/provision-integration"))
.json(&req);
let resp = Self::with_auth_token(http_req, &token).send().await?;
Self::handle_response(resp).await
}
#[cfg(feature = "session")]
Transport::DIDComm { session, .. } => {
crate::provision_integration::didcomm::provision_integration_didcomm(
session,
req.request,
req.context,
req.assertion,
req.vc_validity_seconds,
req.create_context,
)
.await
}
}
}
}