vk_token_manager/
lib.rs

1//! Crate for managing tokens for VK bots!
2//! It provides a few abstractions for doing it.
3//! # Example
4//! ```
5//! use token_manager::{TokenManager, ManageTokens};
6//! use token_manager::{GroupId, SimpleToken, Token};
7//! let mut manager = TokenManager::new(); // create token manager
8//! // put (boxed) token into.
9//! manager.add_token(GroupId::new(123), Box::new(SimpleToken::new(Token::new("my-token".into()))));
10//! let result = async {
11//!     // get token by id
12//!     let tok = manager.get_by_id(GroupId::new(123)).await;
13//!     assert_eq!(tok, Some(&Token::new("my-token".into())));
14//! };
15//! ```
16
17pub use async_trait::async_trait;
18
19pub mod manager;
20pub mod token;
21
22pub use manager::{GroupId, ManageTokens, TokenManager};
23pub use token::{GetToken, Token};
24
25/// Default implementor of `GetToken` trait.
26/// Usually you would use it.
27#[derive(Debug, Hash, Eq, PartialEq, Clone)]
28pub struct SimpleToken {
29    pub token: Token,
30}
31
32impl SimpleToken {
33    /// Create new `SimpleToken` form `Token`
34    pub fn new(token: Token) -> Self {
35        Self { token }
36    }
37}
38
39#[async_trait]
40impl GetToken for SimpleToken {
41    async fn get_token(&self) -> &Token {
42        &self.token
43    }
44}