Add error to JsValue conversion and example (#691)
This commit is contained in:
committed by
Sean McArthur
parent
57300edbc4
commit
43f2ff083c
46
examples/wasm_github_fetch/src/lib.rs
Normal file
46
examples/wasm_github_fetch/src/lib.rs
Normal file
@@ -0,0 +1,46 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
use wasm_bindgen::prelude::*;
|
||||
|
||||
// NOTE: This test is a clone of https://github.com/rustwasm/wasm-bindgen/blob/master/examples/fetch/src/lib.rs
|
||||
// but uses Reqwest instead of the web_sys fetch api directly
|
||||
|
||||
/// A struct to hold some data from the github Branch API.
|
||||
///
|
||||
/// Note how we don't have to define every member -- serde will ignore extra
|
||||
/// data when deserializing
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
pub struct Branch {
|
||||
pub name: String,
|
||||
pub commit: Commit,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
pub struct Commit {
|
||||
pub sha: String,
|
||||
pub commit: CommitDetails,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
pub struct CommitDetails {
|
||||
pub author: Signature,
|
||||
pub committer: Signature,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
pub struct Signature {
|
||||
pub name: String,
|
||||
pub email: String,
|
||||
}
|
||||
|
||||
#[wasm_bindgen]
|
||||
pub async fn run() -> Result<JsValue, JsValue> {
|
||||
let res = reqwest::Client::new()
|
||||
.get("https://api.github.com/repos/rustwasm/wasm-bindgen/branches/master")
|
||||
.send()
|
||||
.await?;
|
||||
|
||||
let text = res.text().await?;
|
||||
let branch_info: Branch = serde_json::from_str(&text).unwrap();
|
||||
|
||||
Ok(JsValue::from_serde(&branch_info).unwrap())
|
||||
}
|
||||
Reference in New Issue
Block a user