sheeet-funcs 0.1.4

Sheeet! base functions crate.
Documentation
use wasm_bindgen::prelude::*;
use wasm_bindgen_futures::JsFuture;
use web_sys::js_sys::Reflect;
use web_sys::{Request, RequestInit, RequestMode, Response};

#[wasm_bindgen]
pub async fn fetch_get_json_path(url: &str, path: &str) -> Result<JsValue, JsValue> {
    let opts = RequestInit::new();
    opts.set_method("GET");
    opts.set_mode(RequestMode::Cors);

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

    let window = web_sys::window().unwrap();
    let resp_value = JsFuture::from(window.fetch_with_request(&request)).await?;

    assert!(resp_value.is_instance_of::<Response>());
    let resp: Response = resp_value.dyn_into()?;

    let json = JsFuture::from(resp.json()?).await?;

    let mut searched_value = json;
    if path.len() == 0 {
        return Ok(searched_value);
    }
    for step in path.split(".") {
        let new_searched_value = Reflect::get(&searched_value, &JsValue::from_str(step))?;
        searched_value = new_searched_value;
    }
    Ok(searched_value)
}