@@ -112,41 +112,58 @@ mod test {
112112 use std:: sync:: Arc ;
113113
114114 use gloo_net:: websocket:: futures:: WebSocket ;
115- use wasm_bindgen_test:: { wasm_bindgen_test as test} ;
115+ use wasm_bindgen_test:: wasm_bindgen_test as test;
116+
117+ use wasm_bindgen:: prelude:: * ;
118+
119+ // Bind to JavaScript's console.log
120+ #[ wasm_bindgen]
121+ extern "C" {
122+ #[ wasm_bindgen( js_namespace = console) ]
123+ fn log ( s : & str ) ;
124+ }
125+
126+ // A utility function to use in Rust
127+ pub fn console_log ( s : & str ) {
128+ log ( s) ;
129+ }
116130
117131 #[ test]
118132 async fn test_ws_io ( ) {
119133 use futures_util:: { AsyncReadExt , AsyncWriteExt } ;
120134 assert ! ( true ) ;
121- // // DANGER! TODO get from &self config, do not get config directly from PAYJOIN_DIR ohttp-gateway
122- // // That would reveal IP address
123- // let tls_connector = {
124- // let root_store = futures_rustls::rustls::RootCertStore {
125- // roots: webpki_roots::TLS_SERVER_ROOTS.iter().cloned().collect(),
126- // };
135+ // DANGER! TODO get from &self config, do not get config directly from PAYJOIN_DIR ohttp-gateway
136+ // That would reveal IP address
137+ let tls_connector = {
138+ let root_store = futures_rustls:: rustls:: RootCertStore {
139+ roots : webpki_roots:: TLS_SERVER_ROOTS . iter ( ) . cloned ( ) . collect ( ) ,
140+ } ;
127141
128- // let config = futures_rustls::rustls::ClientConfig::builder()
129- // .with_root_certificates(root_store)
130- // .with_no_client_auth();
131- // futures_rustls::TlsConnector::from(Arc::new(config))
132- // };
133-
134- // let domain = futures_rustls::rustls::pki_types::ServerName::try_from("payjo.in")
135- // .map_err(|_| {
136- // std::io::Error::new(std::io::ErrorKind::InvalidInput, "invalid dnsname")
137- // })
138- // .unwrap()
139- // .to_owned();
140-
141- // let ws = WebSocket::open(&format!("ws://127.0.0.1:3030")).unwrap();
142- // let ws_io = crate::networking::ws_io::WsIo::new(ws);
143- // let mut tls_stream = tls_connector.connect(domain, ws_io).await.unwrap();
144- // let ohttp_keys_req = b"GET /ohttp-keys HTTP/1.1\r\nHost: payjo.in\r\nConnection: close\r\n\r\n";
145- // tls_stream.write_all(ohttp_keys_req).await.unwrap();
146- // tls_stream.flush().await.unwrap();
147- // let mut ohttp_keys = Vec::new();
148- // tls_stream.read_to_end(&mut ohttp_keys).await.unwrap();
149- // let ohttp_keys_base64 = base64::encode(ohttp_keys);
150- // println!("{}", &ohttp_keys_base64);
142+ let config = futures_rustls:: rustls:: ClientConfig :: builder ( )
143+ . with_root_certificates ( root_store)
144+ . with_no_client_auth ( ) ;
145+ futures_rustls:: TlsConnector :: from ( Arc :: new ( config) )
146+ } ;
147+
148+ let domain = futures_rustls:: rustls:: pki_types:: ServerName :: try_from ( "payjo.in" )
149+ . map_err ( |_| {
150+ std:: io:: Error :: new ( std:: io:: ErrorKind :: InvalidInput , "invalid dnsname" )
151+ } )
152+ . unwrap ( )
153+ . to_owned ( ) ;
154+ console_log ( "GGGGGG" ) ;
155+ let ws = WebSocket :: open ( & format ! ( "wss://ohttp.payjoin.org:443" ) ) . unwrap ( ) ;
156+ //let ws_io = crate::networking::ws_io::WsIo::new(ws);
157+ console_log ( "GGGGGG" ) ;
158+ let mut tls_stream = tls_connector. connect ( domain, ws) . await . unwrap ( ) ;
159+ let ohttp_keys_req = b"GET /ohttp-keys HTTP/1.1\r \n Host: payjo.in\r \n Connection: close\r \n \r \n " ;
160+ console_log ( "GGGGGG" ) ;
161+ tls_stream. write_all ( ohttp_keys_req) . await . unwrap ( ) ;
162+ tls_stream. flush ( ) . await . unwrap ( ) ;
163+ let mut ohttp_keys = Vec :: new ( ) ;
164+ tls_stream. read_to_end ( & mut ohttp_keys) . await . unwrap ( ) ;
165+ let ohttp_keys_base64 = base64:: encode ( ohttp_keys) ;
166+ console_log ( & ohttp_keys_base64) ;
167+ println ! ( "{}" , & ohttp_keys_base64) ;
151168 }
152169}
0 commit comments