From e2f9b0e6fd01c4ad8d7fc966a531e48e5aaa334f Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Tue, 14 Aug 2018 16:50:53 -0400 Subject: First pass at HTTP imports Implement --reload Integrate hyper errors into DenoError In collaboration with Tommy Savaria --- src/net.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/net.rs (limited to 'src/net.rs') diff --git a/src/net.rs b/src/net.rs new file mode 100644 index 000000000..fc0df3fa2 --- /dev/null +++ b/src/net.rs @@ -0,0 +1,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 { + let url = module_name.parse::().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); +} -- cgit v1.2.3