@@ -169,25 +169,38 @@ impl JsonTokenStorage {
169169}
170170
171171impl TokenStorage for JsonTokenStorage {
172+ type Error = io:: Error ;
173+
172174 // NOTE: logging might be interesting, currently we swallow all errors
173- fn set ( & mut self , scope_hash : u64 , token : Option < Token > ) {
175+ fn set ( & mut self , scope_hash : u64 , _ : & Vec < & str > , token : Option < Token > ) -> Option < io :: Error > {
174176 let json_token = json:: encode ( & token) . unwrap ( ) ;
175- let res = fs:: OpenOptions :: new ( ) . create ( true ) . write ( true ) . open ( & self . path ( scope_hash) ) ;
176- if let Ok ( mut f) = res {
177- f. write ( json_token. as_bytes ( ) ) . ok ( ) ;
177+ match fs:: OpenOptions :: new ( ) . create ( true ) . write ( true ) . open ( & self . path ( scope_hash) ) {
178+ Ok ( mut f) => {
179+ match f. write ( json_token. as_bytes ( ) ) {
180+ Ok ( _) => None ,
181+ Err ( io_err) => Some ( io_err) ,
182+ }
183+ } ,
184+ Err ( io_err) => Some ( io_err)
178185 }
179186 }
180187
181- fn get ( & self , scope_hash : u64 ) -> Option < Token > {
182- if let Ok ( mut f) = fs:: File :: open ( & self . path ( scope_hash) ) {
183- let mut json_string = String :: new ( ) ;
184- if let Ok ( _) = f. read_to_string ( & mut json_string) {
185- if let Ok ( token) = json:: decode :: < Token > ( & json_string) {
186- return Some ( token)
188+ fn get ( & self , scope_hash : u64 , _: & Vec < & str > ) -> Result < Option < Token > , io:: Error > {
189+ match fs:: File :: open ( & self . path ( scope_hash) ) {
190+ Ok ( mut f) => {
191+ let mut json_string = String :: new ( ) ;
192+ match f. read_to_string ( & mut json_string) {
193+ Ok ( _) => Ok ( Some ( json:: decode :: < Token > ( & json_string) . unwrap ( ) ) ) ,
194+ Err ( io_err) => Err ( io_err) ,
195+ }
196+ } ,
197+ Err ( io_err) => {
198+ match io_err. kind ( ) {
199+ io:: ErrorKind :: NotFound => Ok ( None ) ,
200+ _ => Err ( io_err)
187201 }
188202 }
189203 }
190- None
191204 }
192205}
193206
0 commit comments