gitea_sdk/api/user/
settings.rs1use 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 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 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}