google_jwt_verify/
token.rs

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