@@ -79,7 +79,7 @@ impl Accept {
79
79
// Handle empty strings, and wildcard directives.
80
80
if part. is_empty ( ) {
81
81
continue ;
82
- } else if part == "*" {
82
+ } else if part == "*/* " {
83
83
wildcard = true ;
84
84
continue ;
85
85
}
@@ -177,8 +177,8 @@ impl Header for Accept {
177
177
178
178
if self . wildcard {
179
179
match output. len ( ) {
180
- 0 => write ! ( output, "*" ) . unwrap ( ) ,
181
- _ => write ! ( output, ", *" ) . unwrap ( ) ,
180
+ 0 => write ! ( output, "*/* " ) . unwrap ( ) ,
181
+ _ => write ! ( output, ", */* " ) . unwrap ( ) ,
182
182
}
183
183
}
184
184
@@ -420,4 +420,31 @@ mod test {
420
420
assert_eq ! ( accept. negotiate( & [ mime:: XML ] ) ?, mime:: XML ) ;
421
421
Ok ( ( ) )
422
422
}
423
+
424
+ #[ test]
425
+ fn parse ( ) -> crate :: Result < ( ) > {
426
+ let mut headers = Headers :: new ( ) ;
427
+ headers. insert ( "Accept" , "application/json; q=0.8,*/*" ) ;
428
+ let accept = Accept :: from_headers ( headers) ?. unwrap ( ) ;
429
+
430
+ assert ! ( accept. wildcard( ) ) ;
431
+ assert_eq ! (
432
+ accept. into_iter( ) . collect:: <Vec <_>>( ) ,
433
+ vec![ MediaTypeProposal :: new( mime:: JSON , Some ( 0.8 ) ) ?]
434
+ ) ;
435
+ Ok ( ( ) )
436
+ }
437
+
438
+ #[ test]
439
+ fn serialize ( ) -> crate :: Result < ( ) > {
440
+ let mut accept = Accept :: new ( ) ;
441
+ accept. push ( MediaTypeProposal :: new ( mime:: JSON , Some ( 0.8 ) ) ?) ;
442
+ accept. set_wildcard ( true ) ;
443
+
444
+ assert_eq ! (
445
+ accept. header_value( ) . as_str( ) ,
446
+ "application/json;q=0.800, */*"
447
+ ) ;
448
+ Ok ( ( ) )
449
+ }
423
450
}
0 commit comments