A better Rust ATProto crate
at main 1.5 kB view raw
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}