Skip to content

Commit

Permalink
Add support for a HTTP body for POST (#139)
Browse files Browse the repository at this point in the history
Closes #137

Co-authored-by: Emil Ernerfeldt <[email protected]>
  • Loading branch information
PauloMelo and emilk authored Jan 26, 2021
1 parent 1ac1a72 commit eedb63b
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 3 deletions.
10 changes: 8 additions & 2 deletions egui_glium/src/http.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,15 @@ pub use epi::http::{Request, Response};
/// NOTE: Ok(..) is returned on network error.
/// Err is only for failure to use the fetch api.
pub fn fetch_blocking(request: &Request) -> Result<Response, String> {
let Request { method, url } = request;
let Request { method, url, body } = request;

let resp = ureq::request(method, url).set("Accept", "*/*").call();
let req = ureq::request(method, url).set("Accept", "*/*");
let resp = if body.is_empty() {
req.call()
} else {
req.set("Content-Type", "text/plain; charset=utf-8")
.send_string(body)
};

let (ok, resp) = match resp {
Ok(resp) => (true, resp),
Expand Down
6 changes: 5 additions & 1 deletion egui_web/src/http.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ pub async fn fetch_async(request: &Request) -> Result<Response, String> {
/// NOTE: Ok(..) is returned on network error.
/// Err is only for failure to use the fetch api.
async fn fetch_jsvalue(request: &Request) -> Result<Response, JsValue> {
let Request { method, url } = request;
let Request { method, url, body } = request;

// https://rustwasm.github.io/wasm-bindgen/examples/fetch.html

Expand All @@ -24,6 +24,10 @@ async fn fetch_jsvalue(request: &Request) -> Result<Response, JsValue> {
opts.method(method);
opts.mode(web_sys::RequestMode::Cors);

if !body.is_empty() {
opts.body(Some(&JsValue::from_str(body)));
}

let request = web_sys::Request::new_with_str_and_init(&url, &opts)?;
request.headers().set("Accept", "*/*")?;

Expand Down
12 changes: 12 additions & 0 deletions epi/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,8 @@ pub mod http {
pub method: String,
/// https://…
pub url: String,
/// x-www-form-urlencoded body
pub body: String,
}

impl Request {
Expand All @@ -271,6 +273,16 @@ pub mod http {
Self {
method: "GET".to_owned(),
url: url.into(),
body: "".to_string(),
}
}

/// Create a `POST` requests with the give url and body.
pub fn post(url: impl Into<String>, body: impl Into<String>) -> Self {
Self {
method: "POST".to_owned(),
url: url.into(),
body: body.into(),
}
}
}
Expand Down

0 comments on commit eedb63b

Please sign in to comment.