// SPDX-FileCopyrightText: 2022 Matteo Settenvini // SPDX-License-Identifier: AGPL-3.0-or-later use {crate::api_client::ApiClient, anyhow::Result, reqwest::StatusCode}; pub async fn with(api_client: &ApiClient, urls: UrlsIter) -> Result<()> where UrlsIter: std::iter::Iterator, UrlsIter::Item: AsRef, { 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(()) }