summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2018-08-28 13:49:19 -0400
committerRyan Dahl <ry@tinyclouds.org>2018-08-30 08:29:28 -0400
commitd8d5c421c33b1cc5416ff87f6a7c3837e5176d4d (patch)
treee43b4ae5a48f465d54f6d229f0edde131d84823c /src
parent11896647e6a31122ee8c015e2cc6093e448029d6 (diff)
Support https imports.
Adds hyper-rustls to the build. Use ring for sha1 instead of "ssh1" crate. Fixes #528.
Diffstat (limited to 'src')
-rw-r--r--src/deno_dir.rs22
-rw-r--r--src/main.rs3
-rw-r--r--src/net.rs6
3 files changed, 21 insertions, 10 deletions
diff --git a/src/deno_dir.rs b/src/deno_dir.rs
index 45ce7db28..0a3557d5b 100644
--- a/src/deno_dir.rs
+++ b/src/deno_dir.rs
@@ -3,17 +3,17 @@ use errors::DenoError;
use errors::DenoResult;
use fs as deno_fs;
use net;
-use sha1;
+use ring;
use std;
+use std::fmt::Write;
use std::fs;
use std::path::Path;
use std::path::PathBuf;
use std::result::Result;
-use url;
-use url::Url;
-
#[cfg(test)]
use tempfile::TempDir;
+use url;
+use url::Url;
pub struct DenoDir {
// Example: /Users/rld/.deno/
@@ -331,10 +331,16 @@ fn test_code_cache() {
// https://github.com/denoland/deno/blob/golang/deno_dir.go#L25-L30
fn source_code_hash(filename: &str, source_code: &str) -> String {
- let mut m = sha1::Sha1::new();
- m.update(filename.as_bytes());
- m.update(source_code.as_bytes());
- m.digest().to_string()
+ let mut ctx = ring::digest::Context::new(&ring::digest::SHA1);
+ ctx.update(filename.as_bytes());
+ ctx.update(source_code.as_bytes());
+ let digest = ctx.finish();
+ let mut out = String::new();
+ // TODO There must be a better way to do this...
+ for byte in digest.as_ref() {
+ write!(&mut out, "{:02x}", byte).unwrap();
+ }
+ out
}
#[test]
diff --git a/src/main.rs b/src/main.rs
index a43f62642..e4a756654 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -4,12 +4,13 @@ extern crate hyper;
extern crate libc;
extern crate msg_rs as msg_generated;
extern crate rand;
-extern crate sha1;
extern crate tempfile;
extern crate tokio;
extern crate url;
#[macro_use]
extern crate log;
+extern crate hyper_rustls;
+extern crate ring;
mod binding;
mod deno_dir;
diff --git a/src/net.rs b/src/net.rs
index fc0df3fa2..7e0700bb6 100644
--- a/src/net.rs
+++ b/src/net.rs
@@ -1,13 +1,17 @@
use errors::DenoResult;
+use hyper;
use hyper::rt::{Future, Stream};
use hyper::{Client, Uri};
+use hyper_rustls;
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();
+
+ let https = hyper_rustls::HttpsConnector::new(4);
+ let client: Client<_, hyper::Body> = Client::builder().build(https);
// TODO Use Deno's RT
let mut rt = Runtime::new().unwrap();