diff options
Diffstat (limited to 'runtime/ops/websocket.rs')
-rw-r--r-- | runtime/ops/websocket.rs | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/runtime/ops/websocket.rs b/runtime/ops/websocket.rs index a5681bc52..812844f39 100644 --- a/runtime/ops/websocket.rs +++ b/runtime/ops/websocket.rs @@ -23,8 +23,8 @@ use http::{Method, Request, Uri}; use serde::Deserialize; use std::borrow::Cow; use std::cell::RefCell; -use std::fs::File; use std::io::BufReader; +use std::io::Cursor; use std::rc::Rc; use std::sync::Arc; use tokio::net::TcpStream; @@ -39,20 +39,20 @@ use tokio_tungstenite::{client_async, WebSocketStream}; use webpki::DNSNameRef; #[derive(Clone)] -struct WsCaFile(String); +struct WsCaData(Vec<u8>); #[derive(Clone)] struct WsUserAgent(String); pub fn init( rt: &mut deno_core::JsRuntime, - maybe_ca_file: Option<&str>, + ca_data: Option<Vec<u8>>, user_agent: String, ) { { let op_state = rt.op_state(); let mut state = op_state.borrow_mut(); - if let Some(ca_file) = maybe_ca_file { - state.put::<WsCaFile>(WsCaFile(ca_file.to_string())); + if let Some(ca_data) = ca_data { + state.put::<WsCaData>(WsCaData(ca_data)); } state.put::<WsUserAgent>(WsUserAgent(user_agent)); } @@ -130,7 +130,7 @@ pub async fn op_ws_create( ); } - let maybe_ca_file = state.borrow().try_borrow::<WsCaFile>().cloned(); + let ws_ca_data = state.borrow().try_borrow::<WsCaData>().cloned(); let user_agent = state.borrow().borrow::<WsUserAgent>().0.clone(); let uri: Uri = args.url.parse()?; let mut request = Request::builder().method(Method::GET).uri(&uri); @@ -163,9 +163,8 @@ pub async fn op_ws_create( .root_store .add_server_trust_anchors(&webpki_roots::TLS_SERVER_ROOTS); - if let Some(ws_ca_file) = maybe_ca_file { - let key_file = File::open(ws_ca_file.0)?; - let reader = &mut BufReader::new(key_file); + if let Some(ws_ca_data) = ws_ca_data { + let reader = &mut BufReader::new(Cursor::new(ws_ca_data.0)); config.root_store.add_pem_file(reader).unwrap(); } |