mangadex-api 4.2.1

SDK for the MangaDex API
Documentation
pub mod login;
pub mod refresh_token;

use login::RetriveTokensBuilder;
use refresh_token::RefreshTokensBuilder;

use crate::HttpClientRef;

create_endpoint_node! {
    #[name] OAuthBuider OAuthBuiderMethods,
    #[args] {
        http_client: HttpClientRef,
    },
    #[methods] {
        login() -> RetriveTokensBuilder;
        refresh() -> RefreshTokensBuilder;
    }
}

impl OAuthBuiderMethods for OAuthBuider {
    fn login(&self) -> RetriveTokensBuilder {
        RetriveTokensBuilder::default().http_client(<&Self as Into<HttpClientRef>>::into(self))
    }
    fn refresh(&self) -> RefreshTokensBuilder {
        RefreshTokensBuilder::default().http_client(<&Self as Into<HttpClientRef>>::into(self))
    }
}

#[derive(Debug, serde::Deserialize)]
struct OAuthError {
    error: String,
}

impl OAuthError {
    async fn handle_resp(res: reqwest::Response) -> crate::error::Error {
        crate::error::Error::OauthError {
            code: res.status().as_u16(),
            reason: res.json::<Self>().await.ok().map(|b| b.error),
        }
    }
}