1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//! Authentication endpoint handler.
//!
//! <https://api.mangadex.org/swagger.html#/Auth>

mod check_token;
mod login;
mod logout;
mod refresh_token;

use crate::v5::auth::check_token::CheckTokenBuilder;
use crate::v5::auth::login::LoginBuilder;
use crate::v5::auth::logout::LogoutBuilder;
use crate::v5::auth::refresh_token::RefreshTokenBuilder;
use crate::HttpClientRef;

/// Authentication endpoint handler builder.
#[derive(Debug)]
pub struct AuthBuilder {
    http_client: HttpClientRef,
}

impl AuthBuilder {
    #[doc(hidden)]
    pub(crate) fn new(http_client: HttpClientRef) -> Self {
        Self { http_client }
    }

    /// Log into an account.
    ///
    /// <https://api.mangadex.org/swagger.html#/Auth/post-auth-login>
    pub fn login(&self) -> LoginBuilder {
        LoginBuilder::default().http_client(self.http_client.clone())
    }

    /// Log out of an account.
    ///
    /// <https://api.mangadex.org/swagger.html#/Auth/post-auth-logout>
    pub fn logout(&self) -> LogoutBuilder {
        LogoutBuilder::default().http_client(self.http_client.clone())
    }

    /// Get a new session token from the refresh token.
    ///
    /// <https://api.mangadex.org/swagger.html#/Auth/post-auth-refresh>
    pub fn refresh_token(&self) -> RefreshTokenBuilder {
        RefreshTokenBuilder::default().http_client(self.http_client.clone())
    }

    /// Check the current session token and get basic info about the authenticated user.
    ///
    /// <https://api.mangadex.org/swagger.html#/Auth/get-auth-check>
    pub fn check_token(&self) -> CheckTokenBuilder {
        CheckTokenBuilder::default().http_client(self.http_client.clone())
    }
}