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}