@@ -7,14 +7,13 @@ use hyper::{
77 } ,
88 header:: { HeaderMap , HeaderName , HeaderValue } ,
99 service:: Service ,
10- Body , Request , StatusCode , Uri ,
10+ Body , Request , Uri ,
1111} ;
1212use log:: { debug, info, trace, warn} ;
1313use pin_project:: pin_project;
1414use std:: {
1515 boxed,
16- collections:: HashMap ,
17- fmt:: { self , Debug , Display , Formatter } ,
16+ fmt:: { self , Debug , Formatter } ,
1817 future:: Future ,
1918 io:: ErrorKind ,
2019 pin:: Pin ,
@@ -28,8 +27,14 @@ use tokio::{
2827 time:: Sleep ,
2928} ;
3029
31- use crate :: error:: { Error , Result } ;
32- use crate :: { config:: ReconnectOptions , ResponseWrapper } ;
30+ use crate :: {
31+ config:: ReconnectOptions ,
32+ response:: { ErrorBody , Response } ,
33+ } ;
34+ use crate :: {
35+ error:: { Error , Result } ,
36+ event_parser:: ConnectionDetails ,
37+ } ;
3338
3439use hyper:: client:: HttpConnector ;
3540use hyper_timeout:: TimeoutConnector ;
@@ -396,7 +401,7 @@ where
396401 return match event {
397402 SSE :: Connected ( _) => Poll :: Ready ( Some ( Ok ( event) ) ) ,
398403 SSE :: Event ( ref evt) => {
399- * this. last_event_id = evt. id . clone ( ) ;
404+ this. last_event_id . clone_from ( & evt. id ) ;
400405
401406 if let Some ( retry) = evt. retry {
402407 this. retry_strategy
@@ -405,7 +410,6 @@ where
405410 Poll :: Ready ( Some ( Ok ( event) ) )
406411 }
407412 SSE :: Comment ( _) => Poll :: Ready ( Some ( Ok ( event) ) ) ,
408- SSE :: Connected ( _) => Poll :: Ready ( Some ( Ok ( event) ) ) ,
409413 } ;
410414 }
411415
@@ -442,24 +446,17 @@ where
442446 self . as_mut ( ) . project ( ) . retry_strategy . reset ( Instant :: now ( ) ) ;
443447 self . as_mut ( ) . reset_redirects ( ) ;
444448
445- let headers = resp. headers ( ) ;
446- let mut map = HashMap :: new ( ) ;
447- for ( key, value) in headers. iter ( ) {
448- let key = key. to_string ( ) ;
449- let value = match value. to_str ( ) {
450- Ok ( value) => value. to_string ( ) ,
451- Err ( _) => String :: from ( "" ) ,
452- } ;
453- map. insert ( key, value) ;
454- }
455- let status = resp. status ( ) . as_u16 ( ) ;
449+ let status = resp. status ( ) ;
450+ let headers = resp. headers ( ) . clone ( ) ;
456451
457452 self . as_mut ( )
458453 . project ( )
459454 . state
460455 . set ( State :: Connected ( resp. into_body ( ) ) ) ;
461456
462- return Poll :: Ready ( Some ( Ok ( SSE :: Connected ( ( status, map) ) ) ) ) ;
457+ return Poll :: Ready ( Some ( Ok ( SSE :: Connected ( ConnectionDetails :: new (
458+ Response :: new ( status, headers) ,
459+ ) ) ) ) ) ;
463460 }
464461
465462 if resp. status ( ) == 301 || resp. status ( ) == 307 {
@@ -486,7 +483,8 @@ where
486483 self . as_mut ( ) . project ( ) . state . set ( State :: New ) ;
487484
488485 return Poll :: Ready ( Some ( Err ( Error :: UnexpectedResponse (
489- ResponseWrapper :: new ( resp) ,
486+ Response :: new ( resp. status ( ) , resp. headers ( ) . clone ( ) ) ,
487+ ErrorBody :: new ( resp. into_body ( ) ) ,
490488 ) ) ) ) ;
491489 }
492490 Err ( e) => {
0 commit comments