A better Rust ATProto crate
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}