Skip to main content

lichess_api/api/
account.rs

1//! Read and manage the logged in user's own account: public profile, email
2//! address, kid mode, preferences, and activity timeline.
3//!
4//! Every method here requires a bearer token for the account being queried —
5//! there is no anonymous access. [`LichessApi::get_email_address`] and
6//! [`LichessApi::get_kid_mode_status`]/[`LichessApi::set_kid_mode_status`]
7//! additionally require the `email:read` and `preference:read` (or
8//! `preference:write`) scopes respectively, not just any token.
9
10use crate::client::LichessApi;
11use crate::error::Result;
12use crate::model::account::*;
13
14impl LichessApi<reqwest::Client> {
15    pub async fn get_profile(&self) -> Result<profile::Profile> {
16        self.get_single_model(profile::GetRequest::new()).await
17    }
18
19    pub async fn get_email_address(&self) -> Result<email::Email> {
20        self.get_single_model(email::GetRequest::new()).await
21    }
22
23    pub async fn get_preferences(&self) -> Result<preferences::UserPreferences> {
24        self.get_single_model(preferences::GetRequest::new()).await
25    }
26
27    pub async fn get_kid_mode_status(&self) -> Result<kid::KidMode> {
28        self.get_single_model(kid::GetRequest::new()).await
29    }
30
31    pub async fn set_kid_mode_status(&self, request: impl Into<kid::PostRequest>) -> Result<bool> {
32        self.get_ok(request.into()).await
33    }
34
35    pub async fn get_timeline(
36        &self,
37        request: impl Into<timeline::GetRequest>,
38    ) -> Result<timeline::Timeline> {
39        self.get_single_model(request.into()).await
40    }
41}