Skip to main content

telegram_bot_raw/requests/_base/request_types/
json.rs

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