gitea_sdk/api/repos/contents/
delete_file.rs1use build_it::Builder;
2use serde::{Deserialize, Serialize};
3
4use crate::{
5 model::repos::{CommitDateOptions, EntryMutation, Identity},
6 Result,
7};
8
9#[derive(Debug, Serialize, Deserialize, Builder)]
10#[build_it(into)]
11pub struct DeleteFileRepoBuilder {
12 #[skip]
14 #[serde(skip)]
15 owner: String,
16 #[skip]
18 #[serde(skip)]
19 repo: String,
20 #[skip]
22 #[serde(skip)]
23 filepath: String,
24 #[serde(skip_serializing_if = "Option::is_none")]
26 author: Option<Identity>,
27 #[serde(skip_serializing_if = "Option::is_none")]
29 branch: Option<String>,
30 #[serde(skip_serializing_if = "Option::is_none")]
32 committer: Option<Identity>,
33 dates: Option<CommitDateOptions>,
35 message: Option<String>,
37 new_branch: Option<String>,
39 #[skip]
41 sha: String,
42 signoff: Option<bool>,
44}
45
46impl DeleteFileRepoBuilder {
47 pub fn new(
48 owner: impl ToString,
49 repo: impl ToString,
50 filepath: impl ToString,
51 sha: impl ToString,
52 ) -> Self {
53 Self {
54 owner: owner.to_string(),
55 repo: repo.to_string(),
56 filepath: filepath.to_string(),
57 author: None,
58 branch: None,
59 committer: None,
60 dates: None,
61 message: None,
62 new_branch: None,
63 sha: sha.to_string(),
64 signoff: None,
65 }
66 }
67
68 pub async fn send(&self, client: &crate::Client) -> Result<EntryMutation> {
70 let owner = &self.owner;
71 let repo = &self.repo;
72 let filepath = &self.filepath;
73
74 let req = client
75 .delete(format!("repos/{owner}/{repo}/contents/{filepath}"))
76 .json(self)
77 .build()?;
78
79 let res = client.make_request(req).await?;
80
81 client.parse_response(res).await
82 }
83}