@@ -7,14 +7,13 @@ use hyper::{
7
7
} ,
8
8
header:: { HeaderMap , HeaderName , HeaderValue } ,
9
9
service:: Service ,
10
- Body , Request , StatusCode , Uri ,
10
+ Body , Request , Uri ,
11
11
} ;
12
12
use log:: { debug, info, trace, warn} ;
13
13
use pin_project:: pin_project;
14
14
use std:: {
15
15
boxed,
16
- collections:: HashMap ,
17
- fmt:: { self , Debug , Display , Formatter } ,
16
+ fmt:: { self , Debug , Formatter } ,
18
17
future:: Future ,
19
18
io:: ErrorKind ,
20
19
pin:: Pin ,
@@ -28,8 +27,14 @@ use tokio::{
28
27
time:: Sleep ,
29
28
} ;
30
29
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
+ } ;
33
38
34
39
use hyper:: client:: HttpConnector ;
35
40
use hyper_timeout:: TimeoutConnector ;
@@ -396,7 +401,7 @@ where
396
401
return match event {
397
402
SSE :: Connected ( _) => Poll :: Ready ( Some ( Ok ( event) ) ) ,
398
403
SSE :: Event ( ref evt) => {
399
- * this. last_event_id = evt. id . clone ( ) ;
404
+ this. last_event_id . clone_from ( & evt. id ) ;
400
405
401
406
if let Some ( retry) = evt. retry {
402
407
this. retry_strategy
@@ -405,7 +410,6 @@ where
405
410
Poll :: Ready ( Some ( Ok ( event) ) )
406
411
}
407
412
SSE :: Comment ( _) => Poll :: Ready ( Some ( Ok ( event) ) ) ,
408
- SSE :: Connected ( _) => Poll :: Ready ( Some ( Ok ( event) ) ) ,
409
413
} ;
410
414
}
411
415
@@ -442,24 +446,17 @@ where
442
446
self . as_mut ( ) . project ( ) . retry_strategy . reset ( Instant :: now ( ) ) ;
443
447
self . as_mut ( ) . reset_redirects ( ) ;
444
448
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 ( ) ;
456
451
457
452
self . as_mut ( )
458
453
. project ( )
459
454
. state
460
455
. set ( State :: Connected ( resp. into_body ( ) ) ) ;
461
456
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
+ ) ) ) ) ) ;
463
460
}
464
461
465
462
if resp. status ( ) == 301 || resp. status ( ) == 307 {
@@ -486,7 +483,8 @@ where
486
483
self . as_mut ( ) . project ( ) . state . set ( State :: New ) ;
487
484
488
485
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 ( ) ) ,
490
488
) ) ) ) ;
491
489
}
492
490
Err ( e) => {
0 commit comments