11use reqwest:: { Client , Request } ;
2- use reqwest:: { Method , Error } ;
2+ use reqwest:: Method ;
3+ use reqwest:: Error as ReqwestError ;
34use reqwest:: header:: HeaderValue ;
45use url:: { Origin , Url } ;
56use reqwest:: header:: USER_AGENT ;
67use crate :: http:: { RobotsTxtClient , DEFAULT_USER_AGENT } ;
78use crate :: parser:: { ParseResult , parse_fetched_robots_txt} ;
89use crate :: model:: FetchedRobotsTxt ;
10+ use crate :: model:: { Error , ErrorKind } ;
911use std:: pin:: Pin ;
1012use futures:: task:: { Context , Poll } ;
1113use futures:: Future ;
1214use futures:: future:: TryFutureExt ;
1315use futures:: future:: ok as future_ok;
1416
15- type FetchFuture = Box < dyn Future < Output =Result < ( ResponseInfo , String ) , Error > > > ;
17+ type FetchFuture = Box < dyn Future < Output =Result < ( ResponseInfo , String ) , ReqwestError > > > ;
1618
1719impl RobotsTxtClient for Client {
18- type Result = RobotsTxtResponse ;
20+ type Result = Result < RobotsTxtResponse , Error > ;
1921 fn fetch_robots_txt ( & self , origin : Origin ) -> Self :: Result {
2022 let url = format ! ( "{}/robots.txt" , origin. unicode_serialization( ) ) ;
21- let url = Url :: parse ( & url) . expect ( "Unable to parse robots.txt url" ) ;
23+ let url = Url :: parse ( & url) . map_err ( |err| Error { kind : ErrorKind :: Url ( err ) } ) ? ;
2224 let mut request = Request :: new ( Method :: GET , url) ;
2325 let _ = request. headers_mut ( ) . insert ( USER_AGENT , HeaderValue :: from_static ( DEFAULT_USER_AGENT ) ) ;
2426 let response = self
@@ -29,11 +31,11 @@ impl RobotsTxtClient for Client {
2931 return future_ok ( ( response_info, response_text) ) ;
3032 } ) ;
3133 } ) ;
32- let response: Pin < Box < dyn Future < Output =Result < ( ResponseInfo , String ) , Error > > > > = Box :: pin ( response) ;
33- return RobotsTxtResponse {
34+ let response: Pin < Box < dyn Future < Output =Result < ( ResponseInfo , String ) , ReqwestError > > > > = Box :: pin ( response) ;
35+ Ok ( RobotsTxtResponse {
3436 origin,
3537 response,
36- }
38+ } )
3739 }
3840}
3941
@@ -55,7 +57,7 @@ impl RobotsTxtResponse {
5557}
5658
5759impl Future for RobotsTxtResponse {
58- type Output = Result < ParseResult < FetchedRobotsTxt > , Error > ;
60+ type Output = Result < ParseResult < FetchedRobotsTxt > , ReqwestError > ;
5961
6062 fn poll ( self : Pin < & mut Self > , cx : & mut Context ) -> Poll < Self :: Output > {
6163 let self_mut = self . get_mut ( ) ;
@@ -73,4 +75,4 @@ impl Future for RobotsTxtResponse {
7375 } ,
7476 }
7577 }
76- }
78+ }
0 commit comments