use crate::models::{CosmosDiagnostics, CosmosResponse};
use crate::SessionToken;
use azure_core::http::{headers::Headers, response::ResponseBody, StatusCode};
use serde::de::DeserializeOwned;
#[derive(Debug)]
pub struct ResourceResponse<T> {
response: CosmosResponse<T>,
}
impl<T> ResourceResponse<T> {
pub(crate) fn new(response: CosmosResponse<T>) -> Self {
Self { response }
}
pub fn status(&self) -> StatusCode {
self.response.status()
}
pub fn headers(&self) -> &Headers {
self.response.headers()
}
#[cfg(feature = "fault_injection")]
pub fn request_url(&self) -> azure_core::http::Url {
self.response
.request_url()
.expect("request URL should be present for gateway-routed operations")
}
pub fn into_body(self) -> ResponseBody {
self.response.into_body()
}
pub fn request_charge(&self) -> Option<f64> {
self.response.request_charge()
}
pub fn session_token(&self) -> Option<SessionToken> {
self.response.session_token()
}
pub fn diagnostics(&self) -> &CosmosDiagnostics {
self.response.diagnostics()
}
}
impl<T: DeserializeOwned> ResourceResponse<T> {
pub fn into_model(self) -> azure_core::Result<T> {
self.response.into_model()
}
}