1
- use std :: fmt ;
1
+ use mime :: Mime ;
2
2
3
- use header;
4
- use header:: parsing;
5
-
6
- use mime;
3
+ use header:: QualityItem ;
7
4
8
5
/// The `Accept` header.
9
6
///
@@ -26,43 +23,36 @@ use mime;
26
23
/// qitem(Mime(Text, Xml, vec![])) ]));
27
24
/// ```
28
25
#[ derive( Clone , PartialEq , Debug ) ]
29
- pub struct Accept ( pub Vec < header:: QualityItem < mime:: Mime > > ) ;
30
-
31
- deref ! ( Accept => Vec <header:: QualityItem <mime:: Mime >>) ;
32
-
33
- impl header:: Header for Accept {
34
- fn header_name ( ) -> & ' static str {
35
- "Accept"
36
- }
37
-
38
- fn parse_header ( raw : & [ Vec < u8 > ] ) -> Option < Accept > {
39
- // TODO: Return */* if no value is given.
40
- parsing:: from_comma_delimited ( raw) . map ( Accept )
26
+ pub struct Accept ( pub Vec < QualityItem < Mime > > ) ;
27
+
28
+ impl_list_header ! ( Accept ,
29
+ "Accept" ,
30
+ Vec <QualityItem <Mime >>) ;
31
+
32
+ #[ cfg( test) ]
33
+ mod tests {
34
+ use mime:: * ;
35
+
36
+ use header:: { Header , QualityItem , qitem} ;
37
+ use super :: Accept ;
38
+
39
+ #[ test]
40
+ fn test_parse_header_no_quality ( ) {
41
+ let a: Accept = Header :: parse_header ( [ b"text/plain; charset=utf-8" . to_vec ( ) ] . as_slice ( ) ) . unwrap ( ) ;
42
+ let b = Accept ( vec ! [
43
+ qitem( Mime ( TopLevel :: Text , SubLevel :: Plain , vec![ ( Attr :: Charset , Value :: Utf8 ) ] ) ) ,
44
+ ] ) ;
45
+ assert_eq ! ( a, b) ;
41
46
}
42
- }
43
47
44
- impl header:: HeaderFormat for Accept {
45
- fn fmt_header ( & self , fmt : & mut fmt:: Formatter ) -> fmt:: Result {
46
- parsing:: fmt_comma_delimited ( fmt, & self [ ] )
48
+ #[ test]
49
+ fn test_parse_header_with_quality ( ) {
50
+ let a: Accept = Header :: parse_header ( [ b"text/plain; charset=utf-8; q=0.5" . to_vec ( ) ] . as_slice ( ) ) . unwrap ( ) ;
51
+ let b = Accept ( vec ! [
52
+ QualityItem :: new( Mime ( TopLevel :: Text , SubLevel :: Plain , vec![ ( Attr :: Charset , Value :: Utf8 ) ] ) , 0.5f32 ) ,
53
+ ] ) ;
54
+ assert_eq ! ( a, b) ;
47
55
}
48
56
}
49
57
50
58
bench_header ! ( bench, Accept , { vec![ b"text/plain; q=0.5, text/html" . to_vec( ) ] } ) ;
51
-
52
- #[ test]
53
- fn test_parse_header_no_quality ( ) {
54
- let a: Accept = header:: Header :: parse_header ( [ b"text/plain; charset=utf-8" . to_vec ( ) ] . as_slice ( ) ) . unwrap ( ) ;
55
- let b = Accept ( vec ! [
56
- header:: QualityItem { item: mime:: Mime ( mime:: TopLevel :: Text , mime:: SubLevel :: Plain , vec![ ( mime:: Attr :: Charset , mime:: Value :: Utf8 ) ] ) , quality: 1f32 } ,
57
- ] ) ;
58
- assert_eq ! ( a, b) ;
59
- }
60
-
61
- #[ test]
62
- fn test_parse_header_with_quality ( ) {
63
- let a: Accept = header:: Header :: parse_header ( [ b"text/plain; charset=utf-8; q=0.5" . to_vec ( ) ] . as_slice ( ) ) . unwrap ( ) ;
64
- let b = Accept ( vec ! [
65
- header:: QualityItem { item: mime:: Mime ( mime:: TopLevel :: Text , mime:: SubLevel :: Plain , vec![ ( mime:: Attr :: Charset , mime:: Value :: Utf8 ) ] ) , quality: 0.5f32 } ,
66
- ] ) ;
67
- assert_eq ! ( a, b) ;
68
- }
0 commit comments