identity/aziot-identityd/src/http/get_provisioning_info.rs (14 lines of code) (raw):
// Copyright (c) Microsoft. All rights reserved.
pub(super) struct Route {
api: std::sync::Arc<tokio::sync::Mutex<crate::Api>>,
}
#[async_trait::async_trait]
impl http_common::server::Route for Route {
type ApiVersion = aziot_identity_common_http::ApiVersion;
fn api_version() -> &'static dyn http_common::DynRangeBounds<Self::ApiVersion> {
&((aziot_identity_common_http::ApiVersion::V2021_12_01)..)
}
type Service = super::Service;
fn from_uri(
service: &Self::Service,
path: &str,
_query: &[(std::borrow::Cow<'_, str>, std::borrow::Cow<'_, str>)],
_extensions: &http::Extensions,
) -> Option<Self> {
if path != "/identities/provisioning" {
return None;
}
Some(Route {
api: service.api.clone(),
})
}
async fn get(self) -> http_common::server::RouteResponse {
let api = self.api.lock().await;
let provisioning = api
.get_provisioning_info()
.await
.map_err(|err| super::to_http_error(&err))?;
let res = http_common::server::response::json(hyper::StatusCode::OK, &provisioning);
Ok(res)
}
type DeleteBody = serde::de::IgnoredAny;
type PostBody = serde::de::IgnoredAny;
type PutBody = serde::de::IgnoredAny;
}