1use tracing::{Instrument, instrument};
7
8use super::errors::PLCDIDError;
9use super::model::Document;
10
11#[instrument(skip(http_client), err)]
14pub async fn query(
15 http_client: &reqwest::Client,
16 plc_hostname: &str,
17 did: &str,
18) -> Result<Document, PLCDIDError> {
19 let url = format!("https://{}/{}", plc_hostname, did);
20
21 http_client
22 .get(&url)
23 .send()
24 .instrument(tracing::info_span!("http_client_get"))
25 .await
26 .map_err(|error| PLCDIDError::HttpRequestFailed {
27 url: url.clone(),
28 error,
29 })?
30 .json::<Document>()
31 .await
32 .map_err(|error| PLCDIDError::DocumentParseFailed { url, error })
33}