33use async_trait:: async_trait;
44use crates_io_env_vars:: { var, var_parsed} ;
55use http:: StatusCode ;
6- use reqwest:: IntoUrl ;
76use serde:: Deserialize ;
87use tracing:: warn;
98use url:: Url ;
@@ -44,17 +43,15 @@ pub struct RealDocsRsClient {
4443}
4544
4645impl RealDocsRsClient {
47- pub fn new ( base_url : impl IntoUrl , api_token : impl Into < String > ) -> Result < Self , DocsRsError > {
48- Ok ( Self {
46+ pub fn new ( base_url : Url , api_token : impl Into < String > ) -> Self {
47+ Self {
4948 client : reqwest:: Client :: builder ( )
5049 . user_agent ( "crates.io" )
5150 . build ( )
5251 . unwrap ( ) ,
53- base_url : base_url
54- . into_url ( )
55- . map_err ( |err| DocsRsError :: Other ( err. into ( ) ) ) ?,
52+ base_url,
5653 api_token : api_token. into ( ) ,
57- } )
54+ }
5855 }
5956
6057 pub fn from_environment ( ) -> Option < Self > {
@@ -69,7 +66,7 @@ impl RealDocsRsClient {
6966
7067 let api_token = var ( "DOCS_RS_API_TOKEN" ) . ok ( ) ??;
7168
72- Some ( Self :: new ( base_url, api_token) . expect ( "URL is always valid here" ) )
69+ Some ( Self :: new ( base_url, api_token) )
7370 }
7471}
7572
@@ -142,7 +139,7 @@ mod tests {
142139 let ( server, mock) = mock ( "krate" , "0.1.0" , StatusCode :: CREATED ) . await ;
143140 mock. create ( ) ;
144141
145- let docs_rs = RealDocsRsClient :: new ( server. url ( ) , "test_token" ) ? ;
142+ let docs_rs = RealDocsRsClient :: new ( Url :: parse ( & server. url ( ) ) ? , "test_token" ) ;
146143
147144 docs_rs. rebuild_docs ( "krate" , "0.1.0" ) . await ?;
148145
@@ -154,7 +151,7 @@ mod tests {
154151 let ( server, mock) = mock ( "krate" , "0.1.0" , StatusCode :: NOT_FOUND ) . await ;
155152 mock. create ( ) ;
156153
157- let docs_rs = RealDocsRsClient :: new ( server. url ( ) , "test_token" ) ? ;
154+ let docs_rs = RealDocsRsClient :: new ( Url :: parse ( & server. url ( ) ) ? , "test_token" ) ;
158155
159156 assert_matches ! (
160157 docs_rs. rebuild_docs( "krate" , "0.1.0" ) . await ,
@@ -169,7 +166,7 @@ mod tests {
169166 let ( server, mock) = mock ( "krate" , "0.1.0" , StatusCode :: TOO_MANY_REQUESTS ) . await ;
170167 mock. create ( ) ;
171168
172- let docs_rs = RealDocsRsClient :: new ( server. url ( ) , "test_token" ) ? ;
169+ let docs_rs = RealDocsRsClient :: new ( Url :: parse ( & server. url ( ) ) ? , "test_token" ) ;
173170
174171 assert_matches ! (
175172 docs_rs. rebuild_docs( "krate" , "0.1.0" ) . await ,
@@ -186,7 +183,7 @@ mod tests {
186183 let ( server, mock) = mock ( "krate" , "0.1.0" , status) . await ;
187184 mock. create ( ) ;
188185
189- let docs_rs = RealDocsRsClient :: new ( server. url ( ) , "test_token" ) ? ;
186+ let docs_rs = RealDocsRsClient :: new ( Url :: parse ( & server. url ( ) ) ? , "test_token" ) ;
190187
191188 assert_matches ! (
192189 docs_rs. rebuild_docs( "krate" , "0.1.0" ) . await ,
@@ -204,7 +201,7 @@ mod tests {
204201 } ) ) ?;
205202 mock. with_body ( & body) . create ( ) ;
206203
207- let docs_rs = RealDocsRsClient :: new ( server. url ( ) , "test_token" ) ? ;
204+ let docs_rs = RealDocsRsClient :: new ( Url :: parse ( & server. url ( ) ) ? , "test_token" ) ;
208205
209206 assert_matches ! (
210207 docs_rs. rebuild_docs( "krate" , "0.1.0" ) . await ,
@@ -219,7 +216,7 @@ mod tests {
219216 let ( server, mock) = mock ( "krate" , "0.1.0" , StatusCode :: INTERNAL_SERVER_ERROR ) . await ;
220217 mock. create ( ) ;
221218
222- let docs_rs = RealDocsRsClient :: new ( server. url ( ) , "test_token" ) ? ;
219+ let docs_rs = RealDocsRsClient :: new ( Url :: parse ( & server. url ( ) ) ? , "test_token" ) ;
223220
224221 assert_matches ! (
225222 docs_rs. rebuild_docs( "krate" , "0.1.0" ) . await ,
0 commit comments