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;
16
17#[derive(Debug, Deserialize)]
18pub enum AuthorizeOptionPrompt {
19 Login,
20 None,
21 Consent,
22 SelectAccount,
23}
24
25impl From<AuthorizeOptionPrompt> for CowStr<'static> {
26 fn from(value: AuthorizeOptionPrompt) -> Self {
27 match value {
28 AuthorizeOptionPrompt::Login => CowStr::new_static("login"),
29 AuthorizeOptionPrompt::None => CowStr::new_static("none"),
30 AuthorizeOptionPrompt::Consent => CowStr::new_static("consent"),
31 AuthorizeOptionPrompt::SelectAccount => CowStr::new_static("select_account"),
32 }
33 }
34}
35
36#[derive(Debug)]
37pub struct AuthorizeOptions<'s> {
38 pub redirect_uri: Option<CowStr<'s>>,
39 pub scopes: Vec<Scope<'s>>,
40 pub prompt: Option<AuthorizeOptionPrompt>,
41 pub state: Option<CowStr<'s>>,
42}
43
44impl Default for AuthorizeOptions<'_> {
45 fn default() -> Self {
46 Self {
47 redirect_uri: None,
48 scopes: vec![Scope::Atproto],
49 prompt: None,
50 state: None,
51 }
52 }
53}
54
55#[derive(Debug, Deserialize)]
56pub struct CallbackParams<'s> {
57 #[serde(borrow)]
58 pub code: CowStr<'s>,
59 pub state: Option<CowStr<'s>>,
60 pub iss: Option<CowStr<'s>>,
61}