ephemeris_forge_github/api/http/
custom_properties.rs1use ephemeris_forge::{RepoRef, encode};
2use facet::Facet;
3use reqwest::Method;
4
5use crate::api::HttpApi;
6use crate::api::error::ForgeError;
7use crate::api::model::PropertyEntry;
8use crate::api::operations::CustomPropertiesApi;
9
10#[derive(Facet)]
11struct PropertiesBody {
12 properties: Vec<PropertyEntry>,
13}
14
15impl CustomPropertiesApi for HttpApi {
16 async fn custom_property_values(
17 &self,
18 repository: &RepoRef,
19 ) -> Result<Option<Vec<PropertyEntry>>, ForgeError> {
20 self.optional(&path(repository)).await
21 }
22
23 async fn set_custom_property_values(
24 &self,
25 repository: &RepoRef,
26 entries: &[PropertyEntry],
27 ) -> Result<(), ForgeError> {
28 let request = PropertiesBody {
29 properties: entries.to_vec(),
30 };
31 self.empty(Method::PATCH, &path(repository), Some(encode(&request)))
32 .await
33 }
34}
35
36fn path(repository: &RepoRef) -> String {
37 repository.path("properties/values")
38}