1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
use serde::Serialize; use serde_json; use crate::requests::*; #[derive(Debug, Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] pub struct JsonRequestType<Request> { phantom: ::std::marker::PhantomData<Request>, } impl<Request: Serialize> RequestType for JsonRequestType<Request> { type Options = RequestUrl; type Request = Request; fn serialize(url: Self::Options, request: &Self::Request) -> Result<HttpRequest, Error> { let body = serde_json::to_string(&request).map_err(ErrorKind::from)?; Ok(HttpRequest { url: url, method: Method::Post, body: Body::Json(body), }) } }