Skip to main content

ephemeris_forge_github/api/http/
custom_properties.rs

1use 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}