summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-07-14 10:51:20 -0600
committermo khan <mo@mokhan.ca>2025-07-14 10:51:20 -0600
commitc326bf0dba39c4e6809395902e5d0d3036b0992e (patch)
treecaccdb88d1dd595ad3361cc9baaa9f45c9ade1bd /src
parent0c6051477f6c974856055e4d28bceb3c5c512ae7 (diff)
refactor: extract method to make GET api call
Diffstat (limited to 'src')
-rw-r--r--src/gitlab/api.rs20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/gitlab/api.rs b/src/gitlab/api.rs
index 7f733b4c..3ddf4ec4 100644
--- a/src/gitlab/api.rs
+++ b/src/gitlab/api.rs
@@ -60,13 +60,17 @@ impl Api {
}
pub async fn get_group(&self, group_id: u64) -> Result<Group, Box<dyn std::error::Error>> {
- let url = format!(
- "{}/api/v4/groups/{}",
- self.host.trim_end_matches('/'),
- group_id
- );
+ self.get::<Group>(format!("/api/v4/groups/{}", group_id))
+ .await
+ }
- let group = self
+ async fn get<T: serde::de::DeserializeOwned>(
+ &self,
+ path: String,
+ ) -> Result<T, Box<dyn std::error::Error>> {
+ let url = format!("{}{}", self.host.trim_end_matches('/'), path);
+
+ Ok(self
.client
.get(&url)
.header("PRIVATE-TOKEN", &self.token)
@@ -74,8 +78,6 @@ impl Api {
.await?
.error_for_status()?
.json()
- .await?;
-
- Ok(group)
+ .await?)
}
}