@@ -70,7 +70,9 @@ mod integration {
7070 struct HeaderMock ( HashMap < String , String > ) ;
7171
7272 impl Headers for HeaderMock {
73- fn get_header ( & self , key : & str ) -> Option < & str > { self . 0 . get ( key) . map ( |e| e. as_str ( ) ) }
73+ fn get_header ( & self , key : & str ) -> Option < & str > {
74+ self . 0 . get ( key) . map ( |e| e. as_str ( ) )
75+ }
7476 }
7577
7678 impl HeaderMock {
@@ -276,7 +278,7 @@ mod integration {
276278 wait_for_service_ready ( ohttp_relay. clone ( ) , agent. clone ( ) ) . await . unwrap ( ) ;
277279 wait_for_service_ready ( directory. clone ( ) , agent. clone ( ) ) . await . unwrap ( ) ;
278280 let ohttp_keys =
279- fetch_ohttp_keys ( & ohttp_relay, & directory, cert_der. clone ( ) ) . await ?;
281+ fetch_ohttp_keys ( ohttp_relay, directory. clone ( ) , cert_der. clone ( ) ) . await ?;
280282
281283 // **********************
282284 // Inside the Receiver:
@@ -388,7 +390,7 @@ mod integration {
388390 wait_for_service_ready ( ohttp_relay. clone ( ) , agent. clone ( ) ) . await . unwrap ( ) ;
389391 wait_for_service_ready ( directory. clone ( ) , agent. clone ( ) ) . await . unwrap ( ) ;
390392 let ohttp_keys =
391- fetch_ohttp_keys ( & ohttp_relay, & directory, cert_der. clone ( ) ) . await ?;
393+ fetch_ohttp_keys ( ohttp_relay, directory. clone ( ) , cert_der. clone ( ) ) . await ?;
392394
393395 let mut enrolled =
394396 enroll_with_directory ( directory, ohttp_keys. clone ( ) , cert_der. clone ( ) ) . await ?;
@@ -525,38 +527,16 @@ mod integration {
525527 }
526528
527529 async fn fetch_ohttp_keys (
528- ohttp_relay : & Url ,
529- directory : & Url ,
530+ ohttp_relay : Url ,
531+ directory : Url ,
530532 cert_der : Vec < u8 > ,
531- ) -> Result < payjoin:: OhttpKeys , BoxError > {
532- let ohttp_relay = ohttp_relay. clone ( ) ;
533- let directory_ohttp_keys = directory. join ( "/ohttp-keys" ) ?;
534- let res = spawn_blocking ( move || {
535- http_proxy ( cert_der, & ohttp_relay)
536- . unwrap ( )
537- . get ( directory_ohttp_keys. as_str ( ) )
538- . call ( )
533+ ) -> Result < payjoin:: OhttpKeys , payjoin:: V2Error > {
534+ let res = tokio:: task:: spawn_blocking ( move || {
535+ payjoin_io:: fetch_ohttp_keys ( ohttp_relay. clone ( ) , directory. clone ( ) , cert_der)
539536 } )
540- . await ??;
541- assert_eq ! ( res. status( ) , 200 , "Failed to connect to target {}" , res. status( ) ) ;
542- let mut body = Vec :: new ( ) ;
543- let _ = res. into_reader ( ) . read_to_end ( & mut body) ?;
544- Ok ( payjoin:: OhttpKeys :: decode ( & body) ?)
545- }
546-
547- /// Normalize the Url to include the port for ureq. ureq has a bug
548- /// which makes Proxy::new(...) use port 8080 for all input with scheme
549- /// http regardless of the port included in the Url. This prevents that.
550- /// https://github.com/algesten/ureq/pull/717
551- fn normalize_proxy_url ( proxy : & Url ) -> Result < String , BoxError > {
552- let scheme = proxy. scheme ( ) ;
553- let host = proxy. host_str ( ) . ok_or ( "No host" ) ?;
554-
555- if scheme == "http" || scheme == "https" {
556- Ok ( format ! ( "{}:{}" , host, proxy. port( ) . unwrap_or( 80 ) ) )
557- } else {
558- Ok ( proxy. as_str ( ) . to_string ( ) )
559- }
537+ . await
538+ . map_err ( |e| e. to_string ( ) ) ??;
539+ Ok ( res)
560540 }
561541
562542 async fn enroll_with_directory (
@@ -692,11 +672,6 @@ mod integration {
692672 Ok ( http_agent_builder ( cert_der) ?. build ( ) )
693673 }
694674
695- fn http_proxy ( cert_der : Vec < u8 > , proxy : & Url ) -> Result < Agent , BoxError > {
696- let proxy = ureq:: Proxy :: new ( normalize_proxy_url ( proxy) ?) ?;
697- Ok ( http_agent_builder ( cert_der) ?. proxy ( proxy) . build ( ) )
698- }
699-
700675 fn http_agent_builder ( cert_der : Vec < u8 > ) -> Result < AgentBuilder , BoxError > {
701676 use rustls:: client:: ClientConfig ;
702677 use rustls:: pki_types:: CertificateDer ;
@@ -711,7 +686,9 @@ mod integration {
711686 Ok ( AgentBuilder :: new ( ) . tls_config ( Arc :: new ( client_config) ) )
712687 }
713688
714- fn is_success ( status : u16 ) -> bool { status >= 200 && status < 300 }
689+ fn is_success ( status : u16 ) -> bool {
690+ status >= 200 && status < 300
691+ }
715692
716693 fn find_free_port ( ) -> u16 {
717694 let listener = std:: net:: TcpListener :: bind ( "0.0.0.0:0" ) . unwrap ( ) ;
0 commit comments