1mod client_metadata;
2mod metadata;
3mod request;
4mod response;
5mod token;
6
7use crate::scopes::Scope;
8
9pub use self::client_metadata::*;
10pub use self::metadata::*;
11pub use self::request::*;
12pub use self::response::*;
13pub use self::token::*;
14use jacquard_common::CowStr;
15use serde::Deserialize;
16use url::Url;
17
18#[derive(Debug, Deserialize, Clone, Copy)]
19pub enum AuthorizeOptionPrompt {
20 Login,
21 None,
22 Consent,
23 SelectAccount,
24}
25
26impl From<AuthorizeOptionPrompt> for CowStr<'static> {
27 fn from(value: AuthorizeOptionPrompt) -> Self {
28 match value {
29 AuthorizeOptionPrompt::Login => CowStr::new_static("login"),
30 AuthorizeOptionPrompt::None => CowStr::new_static("none"),
31 AuthorizeOptionPrompt::Consent => CowStr::new_static("consent"),
32 AuthorizeOptionPrompt::SelectAccount => CowStr::new_static("select_account"),
33 }
34 }
35}
36
37#[derive(Debug)]
38pub struct AuthorizeOptions<'s> {
39 pub redirect_uri: Option<Url>,
40 pub scopes: Vec<Scope<'s>>,
41 pub prompt: Option<AuthorizeOptionPrompt>,
42 pub state: Option<CowStr<'s>>,
43}
44
45impl Default for AuthorizeOptions<'_> {
46 fn default() -> Self {
47 Self {
48 redirect_uri: None,
49 scopes: vec![Scope::Atproto],
50 prompt: None,
51 state: None,
52 }
53 }
54}
55
56#[derive(Debug, Deserialize)]
57pub struct CallbackParams<'s> {
58 #[serde(borrow)]
59 pub code: CowStr<'s>,
60 pub state: Option<CowStr<'s>>,
61 pub iss: Option<CowStr<'s>>,
62}