pub mod api;
pub mod config;
pub mod error;
pub mod keyfile;
pub mod verfiles;
pub struct Core {
pub config: (config::Config, std::path::PathBuf),
pub verfiles: (verfiles::Verfile, verfiles::Verfile),
pub client: reqwest::Client,
pub keyfile: Option<keyfile::Keyfile>,
}
pub async fn run_source(
package: (String, config::Package),
client: reqwest::Client,
keyfile: Option<keyfile::Keyfile>,
) -> error::Result<api::Release> {
let (source, api_args) = package.1.get_api();
if let Some(api) = api::API_LIST.iter().find(|a| a.name == source) {
let api_key = if let Some(keyfile_content) = keyfile {
keyfile_content.get_key(api.name).await
} else {
String::new()
};
let args = api::ApiArgs {
request_client: client,
package: package.0,
use_max_tag: package.1.use_max_tag,
args: api_args,
api_key,
};
Ok((api.func)(args).await?)
} else {
Err(error::Error::SourceNotFound(source))
}
}