1use self::private::Sealed;
3use crate::client::Client;
4use crate::error::Result;
5use crate::parse::ProcessedResult;
6use crate::query::{GetQuery, PostQuery};
7use crate::{process::RawResult, query::Query};
8pub use browser::BrowserToken;
9pub use oauth::{OAuthToken, OAuthTokenGenerator};
10
11pub mod browser;
12pub mod oauth;
13
14mod private {
15 pub trait Sealed {}
16}
17
18#[allow(async_fn_in_trait)]
23pub trait AuthToken: Sized + Sealed {
24 async fn raw_query_post<'a, Q: PostQuery + Query<Self>>(
27 &self,
28 client: &Client,
29 query: &'a Q,
30 ) -> Result<RawResult<'a, Q, Self>>;
31 async fn raw_query_get<'a, Q: GetQuery + Query<Self>>(
33 &self,
34 client: &Client,
35 query: &'a Q,
36 ) -> Result<RawResult<'a, Q, Self>>;
37 fn deserialize_json<Q: Query<Self>>(raw: RawResult<Q, Self>) -> Result<ProcessedResult<Q>>;
39}