File tree 1 file changed +17
-15
lines changed
1 file changed +17
-15
lines changed Original file line number Diff line number Diff line change @@ -565,21 +565,23 @@ struct Signature<'r> {
565
565
#[ cfg( feature = "webhook-events" ) ]
566
566
impl < ' r > Signature < ' r > {
567
567
fn parse ( raw : & ' r str ) -> Result < Signature < ' r > , WebhookError > {
568
- let headers: HashMap < & str , & str > = raw
569
- . split ( ',' )
570
- . map ( |header| {
571
- let mut key_and_value = header. split ( '=' ) ;
572
- let key = key_and_value. next ( ) ;
573
- let value = key_and_value. next ( ) ;
574
- ( key, value)
575
- } )
576
- . filter_map ( |( key, value) | match ( key, value) {
577
- ( Some ( key) , Some ( value) ) => Some ( ( key, value) ) ,
578
- _ => None ,
579
- } )
580
- . collect ( ) ;
581
- let t = headers. get ( "t" ) . ok_or ( WebhookError :: BadSignature ) ?;
582
- let v1 = headers. get ( "v1" ) . ok_or ( WebhookError :: BadSignature ) ?;
568
+ let mut t = None ;
569
+ let mut v1 = None ;
570
+ for header in raw. split ( ',' ) {
571
+ let Some ( ( key, value) ) = header. split_once ( '=' ) else {
572
+ continue ;
573
+ } ;
574
+
575
+ match key {
576
+ "t" => t = Some ( value) ,
577
+ "v1" => v1 = Some ( value) ,
578
+ _ => ( ) ,
579
+ }
580
+ }
581
+ let ( Some ( t) , Some ( v1) ) = ( t, v1) else {
582
+ return Err ( WebhookError :: BadSignature ) ;
583
+ } ;
584
+
583
585
Ok ( Signature { t : t. parse :: < i64 > ( ) . map_err ( WebhookError :: BadHeader ) ?, v1 } )
584
586
}
585
587
}
You can’t perform that action at this time.
0 commit comments