ephemeris_forge_github/api/http/
repository.rs1use ephemeris_forge::{RepoRef, encode};
2use reqwest::Method;
3
4use crate::api::HttpApi;
5use crate::api::error::ForgeError;
6use crate::api::model::{ImmutableReleases, Repository};
7use crate::api::operations::RepositoryApi;
8use crate::api::request::{RepositoryPatch, TopicsBody};
9
10impl RepositoryApi for HttpApi {
11 async fn patch_repository(
12 &self,
13 repository: &RepoRef,
14 patch: &RepositoryPatch,
15 ) -> Result<(), ForgeError> {
16 self.empty(Method::PATCH, &repository.path(""), Some(encode(patch)))
17 .await
18 }
19
20 async fn replace_topics(
21 &self,
22 repository: &RepoRef,
23 topics: &[String],
24 ) -> Result<(), ForgeError> {
25 self.empty(
26 Method::PUT,
27 &repository.path("topics"),
28 Some(encode(&TopicsBody { names: topics })),
29 )
30 .await
31 }
32
33 async fn immutable_releases(
34 &self,
35 repository: &RepoRef,
36 ) -> Result<Option<ImmutableReleases>, ForgeError> {
37 self.optional(&repository.path("immutable-releases")).await
38 }
39
40 async fn set_immutable_releases(
41 &self,
42 repository: &RepoRef,
43 enabled: bool,
44 ) -> Result<(), ForgeError> {
45 self.put_switch(repository, "immutable-releases", enabled)
46 .await
47 }
48
49 async fn repository(&self, repository: &RepoRef) -> Result<Repository, ForgeError> {
50 self.send(Method::GET, &repository.path(""), None).await
51 }
52}