diff --git a/src/wasm/request.rs b/src/wasm/request.rs index 976ddfa..7b6ae27 100644 --- a/src/wasm/request.rs +++ b/src/wasm/request.rs @@ -1,7 +1,7 @@ use std::convert::TryFrom; use std::fmt; -use http::Method; +use http::{request::Parts, Method, Request as HttpRequest}; use url::Url; #[cfg(feature = "json")] use serde_json; @@ -300,3 +300,28 @@ fn fmt_request_fields<'a, 'b>( .field("url", &req.url) .field("headers", &req.headers) } + +impl TryFrom> for Request +where + T: Into, +{ + type Error = crate::Error; + + fn try_from(req: HttpRequest) -> crate::Result { + let (parts, body) = req.into_parts(); + let Parts { + method, + uri, + headers, + .. + } = parts; + let url = Url::parse(&uri.to_string()).map_err(crate::error::builder)?; + Ok(Request { + method, + url, + headers, + body: Some(body.into()), + cors: true, + }) + } +}