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 get_packages() {}
|
||||||
pub fn delete_package() {}
|
pub fn delete_package() {}
|
||||||
pub fn list_package_files() {}
|
pub fn list_package_files() {}
|
||||||
|
|||||||
Reference in New Issue
Block a user