summaryrefslogtreecommitdiff
path: root/src/net.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/net.rs')
-rw-r--r--src/net.rs29
1 files changed, 29 insertions, 0 deletions
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<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);
+}