clevercloud_sdk/v2/
myself.rs1use std::fmt::Debug;
7
8#[cfg(feature = "logging")]
9use log::{Level, debug, log_enabled};
10use oauth10a::client::{ClientError, RestClient};
11#[cfg(feature = "jsonschemas")]
12use schemars::JsonSchema;
13use serde::{Deserialize, Serialize};
14
15use crate::Client;
16
17#[cfg_attr(feature = "jsonschemas", derive(JsonSchema))]
21#[derive(Serialize, PartialEq, Eq, Deserialize, Clone, Debug)]
22pub struct Myself {
23 #[serde(rename = "id")]
24 pub id: String,
25 #[serde(rename = "name")]
26 pub name: String,
27 #[serde(rename = "email")]
28 pub email: String,
29 #[serde(rename = "phone")]
30 pub phone: String,
31 #[serde(rename = "address")]
32 pub address: String,
33 #[serde(rename = "city")]
34 pub city: String,
35 #[serde(rename = "zipcode")]
36 pub zipcode: String,
37 #[serde(rename = "country")]
38 pub country: String,
39 #[serde(rename = "avatar")]
40 pub avatar: String,
41 #[serde(rename = "creationDate")]
42 pub creation_date: u64,
43 #[serde(rename = "lang")]
44 pub lang: String,
45 #[serde(rename = "emailValidated")]
46 pub email_validated: bool,
47 #[serde(rename = "oauthApps")]
48 pub oauth_apps: Vec<String>,
49 #[serde(rename = "admin")]
50 pub admin: bool,
51 #[serde(rename = "canPay")]
52 pub can_pay: bool,
53 #[serde(rename = "preferredMFA")]
54 pub preferred_mfa: String,
55 #[serde(rename = "hasPassword")]
56 pub has_password: bool,
57}
58
59#[derive(thiserror::Error, Debug)]
63pub enum Error {
64 #[error("failed to get information about the current user, {0}")]
65 Get(ClientError),
66}
67
68#[cfg_attr(feature = "tracing", tracing::instrument)]
72pub async fn get(client: &Client) -> Result<Myself, Error> {
74 let path = format!("{}/v2/self", client.endpoint);
75
76 #[cfg(feature = "logging")]
77 if log_enabled!(Level::Debug) {
78 debug!(
79 "execute a request to get information about the logged in user, path: '{}'",
80 &path
81 );
82 }
83
84 client.get(&path).await.map_err(Error::Get)
85}