1use std::time::Instant;
2
3pub struct Token {
4 token: String,
5 generated_at: Instant,
6 validity_in_seconds: u64,
7}
8
9impl Token {
10 pub fn new(token: String, generated_at: Instant, validity_in_seconds: u64) -> Token {
11 Token {
12 token,
13 generated_at,
14 validity_in_seconds,
15 }
16 }
17
18 pub fn is_expired(&self) -> bool {
19 self.generated_at.elapsed().as_secs() > self.validity_in_seconds
20 }
21
22 pub fn does_expire_after(&self, seconds: u64) -> bool {
23 (self.generated_at.elapsed().as_secs() + seconds) > self.validity_in_seconds
24 }
25
26 pub fn value(&self) -> &str {
27 &self.token
28 }
29}