31 lines
940 B
Rust
31 lines
940 B
Rust
// SPDX-FileCopyrightText: 2022 Matteo Settenvini <matteo.settenvini@montecristosoftware.eu>
|
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
use {crate::api_client::ApiClient, anyhow::Result, reqwest::StatusCode};
|
|
|
|
pub async fn with<UrlsIter>(api_client: &ApiClient, urls: UrlsIter) -> Result<()>
|
|
where
|
|
UrlsIter: std::iter::Iterator,
|
|
UrlsIter::Item: AsRef<str>,
|
|
{
|
|
for url in urls {
|
|
let response = api_client
|
|
.rest()
|
|
.post(api_client.base_url().join("apps/cookbook/import")?)
|
|
.json(&serde_json::json!({
|
|
"url": url.as_ref(),
|
|
}))
|
|
.send()
|
|
.await?;
|
|
if ![StatusCode::OK, StatusCode::CONFLICT].contains(&response.status()) {
|
|
anyhow::bail!(
|
|
"Unable to import recipe {}, received status code {}",
|
|
url.as_ref(),
|
|
response.status()
|
|
);
|
|
}
|
|
}
|
|
|
|
Ok(())
|
|
}
|