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
//! Crate for managing tokens for VK bots! //! It provides a few abstractions for doing it. //! # Example //! ``` //! use token_manager::{TokenManager, ManageTokens}; //! use token_manager::{GroupId, SimpleToken, Token}; //! let mut manager = TokenManager::new(); // create token manager //! // put (boxed) token into. //! manager.add_token(GroupId::new(123), Box::new(SimpleToken::new(Token::new("my-token".into())))); //! let result = async { //! // get token by id //! let tok = manager.get_by_id(GroupId::new(123)).await; //! assert_eq!(tok, Some(&Token::new("my-token".into()))); //! }; //! ``` pub use async_trait::async_trait; pub mod manager; pub mod token; pub use manager::{GroupId, ManageTokens, TokenManager}; pub use token::{GetToken, Token}; /// Default implementor of `GetToken` trait. /// Usually you would use it. #[derive(Debug, Hash, Eq, PartialEq, Clone)] pub struct SimpleToken { pub token: Token, } impl SimpleToken { /// Create new `SimpleToken` form `Token` pub fn new(token: Token) -> Self { Self { token } } } #[async_trait] impl GetToken for SimpleToken { async fn get_token(&self) -> &Token { &self.token } }