summaryrefslogtreecommitdiff
path: root/src/net.rs
blob: fc0df3fa28f59850abaf73aa451dae3013e95a74 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use errors::DenoResult;
use hyper::rt::{Future, Stream};
use hyper::{Client, Uri};
use tokio::runtime::current_thread::Runtime;

// The CodeFetch message is used to load HTTP javascript resources and expects a
// synchronous response, this utility method supports that.
pub fn fetch_sync_string(module_name: &str) -> DenoResult<String> {
  let url = module_name.parse::<Uri>().unwrap();
  let client = Client::new();

  // TODO Use Deno's RT
  let mut rt = Runtime::new().unwrap();

  let body = rt.block_on(
    client
      .get(url)
      .and_then(|response| response.into_body().concat2()),
  )?;
  Ok(String::from_utf8(body.to_vec()).unwrap())
}

#[test]
fn test_fetch_sync_string() {
  // Relies on external http server. See tools/http_server.py
  let p = fetch_sync_string("http://localhost:4545/package.json").unwrap();
  println!("package.json len {}", p.len());
  assert!(p.len() > 1);
}