Impl the list_packages API function
This commit is contained in:
@@ -1,4 +1,40 @@
|
||||
pub fn list_packages() {}
|
||||
use crate::structs::package::{Package, PackageType};
|
||||
|
||||
/// Gets all packages of an owner
|
||||
///
|
||||
/// https://github.com/go-gitea/gitea/blob/main/routers/api/v1/packages/package.go#L22
|
||||
///
|
||||
/// Matches the route `GET /packages/{owner}`
|
||||
pub async fn list_packages(
|
||||
client: &reqwest::Client,
|
||||
gitea_url: &str,
|
||||
owner: &str,
|
||||
pkg_type: Option<PackageType>,
|
||||
) -> crate::Result<Vec<Package>> {
|
||||
let request_url = format!("{gitea_url}/api/v1/packages/{owner}");
|
||||
// add the query parameter only when a package type filter has been set.
|
||||
let request_url = if let Some(pkg_type) = pkg_type {
|
||||
let pkg_type = pkg_type.to_string();
|
||||
format!("{request_url}?type={pkg_type}")
|
||||
} else {
|
||||
request_url
|
||||
};
|
||||
let req = client.get(request_url).send().await;
|
||||
let response = req.map_err(crate::Error::WrappedReqwestErr)?;
|
||||
|
||||
if response.status().is_success() {
|
||||
let release_list = response
|
||||
.json::<Vec<Package>>()
|
||||
.await
|
||||
.map_err(crate::Error::WrappedReqwestErr)?;
|
||||
return Ok(release_list);
|
||||
} else if response.status().is_client_error() {
|
||||
let mesg = crate::decode_client_error(response).await?;
|
||||
return Err(crate::Error::ApiErrorMessage(mesg));
|
||||
}
|
||||
panic!("Reached the end of `api::list_packages()` without matching a return pathway.");
|
||||
}
|
||||
|
||||
pub fn get_packages() {}
|
||||
pub fn delete_package() {}
|
||||
pub fn list_package_files() {}
|
||||
|
||||
Reference in New Issue
Block a user