gitea_sdk/api/user/
settings.rs

1use build_it::Builder;
2use serde::Serialize;
3
4use crate::{error::Result, model::user::UserSettings, Client};
5
6#[derive(Default, Debug)]
7pub struct GetSettingsBuilder;
8
9#[derive(Default, Debug, Builder, Serialize)]
10#[build_it(into)]
11pub struct UpdateSettingsBuilder {
12    #[serde(skip_serializing_if = "Option::is_none")]
13    description: Option<String>,
14    #[serde(skip_serializing_if = "Option::is_none")]
15    diff_view_style: Option<String>,
16    #[serde(skip_serializing_if = "Option::is_none")]
17    enable_repo_unit_hints: Option<bool>,
18    #[serde(skip_serializing_if = "Option::is_none")]
19    full_name: Option<String>,
20    #[serde(skip_serializing_if = "Option::is_none")]
21    hide_activity: Option<bool>,
22    #[serde(skip_serializing_if = "Option::is_none")]
23    hide_email: Option<bool>,
24    #[serde(skip_serializing_if = "Option::is_none")]
25    language: Option<String>,
26    #[serde(skip_serializing_if = "Option::is_none")]
27    location: Option<String>,
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pronouns: Option<String>,
30    #[serde(skip_serializing_if = "Option::is_none")]
31    theme: Option<String>,
32    #[serde(skip_serializing_if = "Option::is_none")]
33    website: Option<String>,
34}
35
36impl GetSettingsBuilder {
37    pub fn new() -> Self {
38        Self
39    }
40
41    /// Sends the request to get the user's settings.
42    pub async fn send(self, client: &Client) -> Result<UserSettings> {
43        let req = client.get("user/settings").build()?;
44        let res = client.make_request(req).await?;
45        client.parse_response(res).await
46    }
47}
48
49impl UpdateSettingsBuilder {
50    pub fn new() -> Self {
51        Self::default()
52    }
53
54    /// Sends the request to update the user's settings.
55    pub async fn send(self, client: &Client) -> Result<UserSettings> {
56        let req = client.patch("user/settings").json(&self).build()?;
57        let res = client.make_request(req).await?;
58        client.parse_response(res).await
59    }
60}