Implement RequestBuilder::json for wasm32 target (#812)
This commit is contained in:
@@ -3,9 +3,13 @@ use std::fmt;
|
|||||||
|
|
||||||
use http::Method;
|
use http::Method;
|
||||||
use url::Url;
|
use url::Url;
|
||||||
|
#[cfg(feature = "json")]
|
||||||
|
use serde::Serialize;
|
||||||
|
|
||||||
use super::{Body, Client, Response};
|
use super::{Body, Client, Response};
|
||||||
use crate::header::{HeaderMap, HeaderName, HeaderValue};
|
use crate::header::{HeaderMap, HeaderName, HeaderValue};
|
||||||
|
#[cfg(feature = "json")]
|
||||||
|
use crate::header::CONTENT_TYPE;
|
||||||
|
|
||||||
/// A request which can be executed with `Client::execute()`.
|
/// A request which can be executed with `Client::execute()`.
|
||||||
pub struct Request {
|
pub struct Request {
|
||||||
@@ -87,6 +91,26 @@ impl RequestBuilder {
|
|||||||
RequestBuilder { client, request }
|
RequestBuilder { client, request }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "json")]
|
||||||
|
/// Set the request json
|
||||||
|
pub fn json<T: Serialize + ?Sized>(mut self, json: &T) -> RequestBuilder {
|
||||||
|
let mut error = None;
|
||||||
|
if let Ok(ref mut req) = self.request {
|
||||||
|
match serde_json::to_vec(json) {
|
||||||
|
Ok(body) => {
|
||||||
|
req.headers_mut()
|
||||||
|
.insert(CONTENT_TYPE, HeaderValue::from_static("application/json"));
|
||||||
|
*req.body_mut() = Some(body.into());
|
||||||
|
}
|
||||||
|
Err(err) => error = Some(crate::error::builder(err)),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if let Some(err) = error {
|
||||||
|
self.request = Err(err);
|
||||||
|
}
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
/// Set the request body.
|
/// Set the request body.
|
||||||
pub fn body<T: Into<Body>>(mut self, body: T) -> RequestBuilder {
|
pub fn body<T: Into<Body>>(mut self, body: T) -> RequestBuilder {
|
||||||
if let Ok(ref mut req) = self.request {
|
if let Ok(ref mut req) = self.request {
|
||||||
|
|||||||
Reference in New Issue
Block a user