@@ -96,28 +96,29 @@ impl fmt::Display for CacheDirective {
96
96
}
97
97
98
98
impl FromStr for CacheDirective {
99
- fn from_str ( s : & str ) -> Option < CacheDirective > {
99
+ type Err = Option < <u32 as FromStr >:: Err > ;
100
+ fn from_str ( s : & str ) -> Result < CacheDirective , Option < <u32 as FromStr >:: Err > > {
100
101
use self :: CacheDirective :: * ;
101
102
match s {
102
- "no-cache" => Some ( NoCache ) ,
103
- "no-store" => Some ( NoStore ) ,
104
- "no-transform" => Some ( NoTransform ) ,
105
- "only-if-cached" => Some ( OnlyIfCached ) ,
106
- "must-revalidate" => Some ( MustRevalidate ) ,
107
- "public" => Some ( Public ) ,
108
- "private" => Some ( Private ) ,
109
- "proxy-revalidate" => Some ( ProxyRevalidate ) ,
110
- "" => None ,
103
+ "no-cache" => Ok ( NoCache ) ,
104
+ "no-store" => Ok ( NoStore ) ,
105
+ "no-transform" => Ok ( NoTransform ) ,
106
+ "only-if-cached" => Ok ( OnlyIfCached ) ,
107
+ "must-revalidate" => Ok ( MustRevalidate ) ,
108
+ "public" => Ok ( Public ) ,
109
+ "private" => Ok ( Private ) ,
110
+ "proxy-revalidate" => Ok ( ProxyRevalidate ) ,
111
+ "" => Err ( None ) ,
111
112
_ => match s. find ( '=' ) {
112
113
Some ( idx) if idx+1 < s. len ( ) => match ( & s[ ..idx] , & s[ idx+1 ..] . trim_matches ( '"' ) ) {
113
- ( "max-age" , secs) => secs. parse ( ) . map ( MaxAge ) ,
114
- ( "max-stale" , secs) => secs. parse ( ) . map ( MaxStale ) ,
115
- ( "min-fresh" , secs) => secs. parse ( ) . map ( MinFresh ) ,
116
- ( "s-maxage" , secs) => secs. parse ( ) . map ( SMaxAge ) ,
117
- ( left, right) => Some ( Extension ( left. to_string ( ) , Some ( right. to_string ( ) ) ) )
114
+ ( "max-age" , secs) => secs. parse ( ) . map ( MaxAge ) . map_err ( |x| Some ( x ) ) ,
115
+ ( "max-stale" , secs) => secs. parse ( ) . map ( MaxStale ) . map_err ( |x| Some ( x ) ) ,
116
+ ( "min-fresh" , secs) => secs. parse ( ) . map ( MinFresh ) . map_err ( |x| Some ( x ) ) ,
117
+ ( "s-maxage" , secs) => secs. parse ( ) . map ( SMaxAge ) . map_err ( |x| Some ( x ) ) ,
118
+ ( left, right) => Ok ( Extension ( left. to_string ( ) , Some ( right. to_string ( ) ) ) )
118
119
} ,
119
- Some ( _) => None ,
120
- None => Some ( Extension ( s. to_string ( ) , None ) )
120
+ Some ( _) => Err ( None ) ,
121
+ None => Ok ( Extension ( s. to_string ( ) , None ) )
121
122
}
122
123
}
123
124
}
0 commit comments