use http::HeaderMap;
use crate::Error;
pub trait HttpRequestBody {
fn to_vec(&self) -> Result<Vec<u8>, Error>;
fn apply_headers(&self, _headers: &mut HeaderMap) {}
}
#[cfg(feature = "serde")]
impl<B: serde::Serialize> HttpRequestBody for B {
fn to_vec(&self) -> Result<Vec<u8>, Error> {
use snafu::ResultExt;
serde_json::to_vec(self).context(crate::error::JsonSnafu)
}
fn apply_headers(&self, headers: &mut HeaderMap) {
let _ = headers
.entry(http::header::CONTENT_TYPE)
.or_insert_with(|| http::HeaderValue::from_static("application/json"));
}
}