mangadex_api/v5/
oauth.rs

1pub mod login;
2pub mod refresh_token;
3
4use login::RetriveTokensBuilder;
5use refresh_token::RefreshTokensBuilder;
6
7use crate::HttpClientRef;
8
9create_endpoint_node! {
10    #[name] OAuthBuider OAuthBuiderMethods,
11    #[args] {
12        http_client: HttpClientRef,
13    },
14    #[methods] {
15        login() -> RetriveTokensBuilder;
16        refresh() -> RefreshTokensBuilder;
17    }
18}
19
20impl OAuthBuiderMethods for OAuthBuider {
21    fn login(&self) -> RetriveTokensBuilder {
22        RetriveTokensBuilder::default().http_client(<&Self as Into<HttpClientRef>>::into(self))
23    }
24    fn refresh(&self) -> RefreshTokensBuilder {
25        RefreshTokensBuilder::default().http_client(<&Self as Into<HttpClientRef>>::into(self))
26    }
27}
28
29#[derive(Debug, serde::Deserialize)]
30struct OAuthError {
31    error: String,
32}
33
34impl OAuthError {
35    async fn handle_resp(res: reqwest::Response) -> crate::error::Error {
36        crate::error::Error::OauthError {
37            code: res.status().as_u16(),
38            reason: res.json::<Self>().await.ok().map(|b| b.error),
39        }
40    }
41}