Skip to content

Commit a29c7ed

Browse files
committed
docs.rs: Simplify base_url argument
This allows us to not return a `Result` from the constructor function.
1 parent 948e79d commit a29c7ed

File tree

2 files changed

+13
-15
lines changed

2 files changed

+13
-15
lines changed

crates/crates_io_docs_rs/examples/test_docs_rs_client.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use anyhow::{Result, anyhow};
22
use crates_io_docs_rs::{DocsRsClient, RealDocsRsClient};
33
use std::env;
4+
use url::Url;
45

56
#[tokio::main]
67
async fn main() -> Result<()> {
@@ -10,7 +11,7 @@ async fn main() -> Result<()> {
1011
.nth(1)
1112
.ok_or_else(|| anyhow!("Missing access token"))?;
1213

13-
let docs_rs = RealDocsRsClient::new("https://docs.rs", access_token)?;
14+
let docs_rs = RealDocsRsClient::new(Url::parse("https://docs.rs")?, access_token);
1415

1516
docs_rs.rebuild_docs("empty-library", "1.0.0").await?;
1617

crates/crates_io_docs_rs/src/lib.rs

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
use async_trait::async_trait;
44
use crates_io_env_vars::{var, var_parsed};
55
use http::StatusCode;
6-
use reqwest::IntoUrl;
76
use serde::Deserialize;
87
use tracing::warn;
98
use url::Url;
@@ -44,17 +43,15 @@ pub struct RealDocsRsClient {
4443
}
4544

4645
impl 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

Comments
 (0)