1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
pub struct Token<P> { required_claims: RequiredClaims, payload: P, } impl<P> Token<P> { pub fn new(required_claims: RequiredClaims, payload: P) -> Token<P> { Token { required_claims, payload } } pub fn get_claims(&self) -> RequiredClaims { self.required_claims.clone() } pub fn get_payload(&self) -> &P { &self.payload } } #[derive(Deserialize, Clone)] pub struct RequiredClaims { #[serde(rename = "iss")] issuer: String, #[serde(rename = "sub")] subject: String, #[serde(rename = "aud")] audience: String, #[serde(rename = "azp")] android_audience: String, #[serde(rename = "iat")] issued_at: u64, #[serde(rename = "exp")] expires_at: u64, } impl RequiredClaims { pub fn get_issuer(&self) -> String { self.issuer.clone() } pub fn get_subject(&self) -> String { self.subject.clone() } pub fn get_audience(&self) -> String { self.audience.clone() } pub fn get_android_audience(&self) -> String { self.android_audience.clone() } pub fn get_issued_at(&self) -> u64 { self.issued_at } pub fn get_expires_at(&self) -> u64 { self.expires_at } } #[derive(Deserialize, Clone)] pub struct IdPayload { email: String, email_verified: bool, name: String, picture: String, given_name: String, family_name: String, locale: String, hd: Option<String>, } impl IdPayload { pub fn get_email(&self) -> String { self.email.clone() } pub fn is_email_verified(&self) -> bool { self.email_verified } pub fn get_name(&self) -> String { self.name.clone() } pub fn get_picture_url(&self) -> String { self.picture.clone() } pub fn get_given_name(&self) -> String { self.given_name.clone() } pub fn get_family_name(&self) -> String { self.family_name.clone() } pub fn get_locale(&self) -> String { self.locale.clone() } pub fn get_domain(&self) -> Option<String> { self.hd.clone() } }