Skip to content

Commit da5bde7

Browse files
committed
compiles!
1 parent 7f551f6 commit da5bde7

15 files changed

+476
-201
lines changed

.sqlx/query-440b3d15186a21435c470279a5c482315132d6baff4c517df246bc39638f5527.json

+22
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.sqlx/query-5b401b6a191f7364be11110c23228933120dc7c39d0ef436ececc8bee9695c05.json

+15
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.sqlx/query-718576e299a41495b28c843737921e3493a61c0629a9d9a5d04066d443663965.json

+29
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.sqlx/query-97a9b51028cbf8e585e120382efdff87417d99c179c695ded1bdb6cd584a7323.json

+40
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.sqlx/query-ce3c4ceec1fee051b9c9716d7e3dc94b213dc5449083dc109c1d935164e647e2.json

+23
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.sqlx/query-cf83cc24df4c285fe67808f1e1a2b56f850014b975a7506597a4ae3c5c6851aa.json

+15
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.lock

+15
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+2-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ crates-index = { version = "2.2.0", default-features = false, features = ["git",
3535
rayon = "1.6.1"
3636
num_cpus = "1.15.0"
3737
crates-index-diff = { version = "21.0.0", features = [ "max-performance" ]}
38-
reqwest = { version = "0.11", features = ["blocking", "json"] } # TODO: Remove blocking when async is ready
38+
reqwest = { version = "0.11", features = ["json", "gzip"] }
3939
semver = { version = "1.0.4", features = ["serde"] }
4040
slug = "0.1.1"
4141
r2d2 = "0.8"
@@ -124,6 +124,7 @@ kuchikiki = "0.8"
124124
rand = "0.8"
125125
mockito = "1.0.2"
126126
test-case = "3.0.0"
127+
reqwest = { version = "0.11", features = ["blocking", "json"] }
127128
aws-smithy-types = "0.57.1"
128129
aws-smithy-runtime = {version = "0.57.1", features = ["client", "test-util"]}
129130
aws-smithy-http = "0.57.1"

src/bin/cratesfyi.rs

+6-3
Original file line numberDiff line numberDiff line change
@@ -544,18 +544,21 @@ impl DatabaseSubcommand {
544544
}
545545

546546
Self::UpdateRepositoryFields => {
547-
ctx.repository_stats_updater()?.update_all_crates()?;
547+
ctx.runtime()?
548+
.block_on(ctx.repository_stats_updater()?.update_all_crates())?;
548549
}
549550

550551
Self::BackfillRepositoryStats => {
551-
ctx.repository_stats_updater()?.backfill_repositories()?;
552+
ctx.runtime()?
553+
.block_on(ctx.repository_stats_updater()?.backfill_repositories())?;
552554
}
553555

554556
Self::UpdateCrateRegistryFields { name } => {
557+
let runtime = ctx.runtime()?;
555558
db::update_crate_data_in_database(
556559
&mut *ctx.conn()?,
557560
&name,
558-
&ctx.registry_api()?.get_crate_data(&name)?,
561+
&runtime.block_on(ctx.registry_api()?.get_crate_data(&name))?,
559562
)?;
560563
}
561564

src/docbuilder/rustwide_builder.rs

+8-5
Original file line numberDiff line numberDiff line change
@@ -532,8 +532,8 @@ impl RustwideBuilder {
532532

533533
let release_data = if !is_local {
534534
match self
535-
.registry_api
536-
.get_release_data(name, version)
535+
.runtime
536+
.block_on(self.registry_api.get_release_data(name, version))
537537
.with_context(|| {
538538
format!("could not fetch releases-data for {name}-{version}")
539539
}) {
@@ -577,7 +577,10 @@ impl RustwideBuilder {
577577

578578
// Some crates.io crate data is mutable, so we proactively update it during a release
579579
if !is_local {
580-
match self.registry_api.get_crate_data(name) {
580+
match self
581+
.runtime
582+
.block_on(self.registry_api.get_crate_data(name))
583+
{
581584
Ok(crate_data) => {
582585
update_crate_data_in_database(&mut conn, name, &crate_data)?
583586
}
@@ -867,8 +870,8 @@ impl RustwideBuilder {
867870
}
868871

869872
fn get_repo(&self, metadata: &MetadataPackage) -> Result<Option<i32>> {
870-
self.repository_stats_updater
871-
.load_repository(metadata)
873+
self.runtime
874+
.block_on(self.repository_stats_updater.load_repository(metadata))
872875
.map_err(Into::into)
873876
}
874877
}

src/registry_api.rs

+35-15
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::{error::Result, utils::retry};
1+
use crate::{error::Result, utils::retry_async};
22
use anyhow::{anyhow, Context};
33
use chrono::{DateTime, Utc};
44
use reqwest::header::{HeaderValue, ACCEPT, USER_AGENT};
@@ -16,7 +16,7 @@ const APP_USER_AGENT: &str = concat!(
1616
pub struct RegistryApi {
1717
api_base: Url,
1818
max_retries: u32,
19-
client: reqwest::blocking::Client,
19+
client: reqwest::Client,
2020
}
2121

2222
#[derive(Debug)]
@@ -56,7 +56,7 @@ impl RegistryApi {
5656
.into_iter()
5757
.collect();
5858

59-
let client = reqwest::blocking::Client::builder()
59+
let client = reqwest::Client::builder()
6060
.default_headers(headers)
6161
.build()?;
6262

@@ -67,17 +67,19 @@ impl RegistryApi {
6767
})
6868
}
6969

70-
pub fn get_crate_data(&self, name: &str) -> Result<CrateData> {
70+
pub async fn get_crate_data(&self, name: &str) -> Result<CrateData> {
7171
let owners = self
7272
.get_owners(name)
73+
.await
7374
.context(format!("Failed to get owners for {name}"))?;
7475

7576
Ok(CrateData { owners })
7677
}
7778

78-
pub(crate) fn get_release_data(&self, name: &str, version: &str) -> Result<ReleaseData> {
79+
pub(crate) async fn get_release_data(&self, name: &str, version: &str) -> Result<ReleaseData> {
7980
let (release_time, yanked, downloads) = self
8081
.get_release_time_yanked_downloads(name, version)
82+
.await
8183
.context(format!("Failed to get crate data for {name}-{version}"))?;
8284

8385
Ok(ReleaseData {
@@ -88,7 +90,7 @@ impl RegistryApi {
8890
}
8991

9092
/// Get release_time, yanked and downloads from the registry's API
91-
fn get_release_time_yanked_downloads(
93+
async fn get_release_time_yanked_downloads(
9294
&self,
9395
name: &str,
9496
version: &str,
@@ -117,11 +119,20 @@ impl RegistryApi {
117119
downloads: i32,
118120
}
119121

120-
let response: Response = retry(
121-
|| Ok(self.client.get(url.clone()).send()?.error_for_status()?),
122+
let response: Response = retry_async(
123+
|| async {
124+
Ok(self
125+
.client
126+
.get(url.clone())
127+
.send()
128+
.await?
129+
.error_for_status()?)
130+
},
122131
self.max_retries,
123-
)?
124-
.json()?;
132+
)
133+
.await?
134+
.json()
135+
.await?;
125136

126137
let version = Version::parse(version)?;
127138
let version = response
@@ -134,7 +145,7 @@ impl RegistryApi {
134145
}
135146

136147
/// Fetch owners from the registry's API
137-
fn get_owners(&self, name: &str) -> Result<Vec<CrateOwner>> {
148+
async fn get_owners(&self, name: &str) -> Result<Vec<CrateOwner>> {
138149
let url = {
139150
let mut url = self.api_base.clone();
140151
url.path_segments_mut()
@@ -156,11 +167,20 @@ impl RegistryApi {
156167
login: Option<String>,
157168
}
158169

159-
let response: Response = retry(
160-
|| Ok(self.client.get(url.clone()).send()?.error_for_status()?),
170+
let response: Response = retry_async(
171+
|| async {
172+
Ok(self
173+
.client
174+
.get(url.clone())
175+
.send()
176+
.await?
177+
.error_for_status()?)
178+
},
161179
self.max_retries,
162-
)?
163-
.json()?;
180+
)
181+
.await?
182+
.json()
183+
.await?;
164184

165185
let result = response
166186
.users

0 commit comments

Comments
 (0)