pub struct RedisApiKeyStore { /* private fields */ }
Implementations§
Source§impl RedisApiKeyStore
impl RedisApiKeyStore
pub fn new(pool: Pool) -> Self
pub fn new_with_config(pool: Pool, config: BarnacleConfig) -> Self
pub fn from_url(url: &str) -> Result<Self, PoolError>
pub fn with_key_prefix(self, prefix: String) -> Self
pub async fn save_key( &self, api_key: &str, config: Option<&BarnacleConfig>, ttl_seconds: Option<u64>, ) -> Result<(), BarnacleError>
Sourcepub async fn validate_key_with_fallback<F, Fut, E>(
&self,
api_key: &str,
validator: F,
config: Option<&BarnacleConfig>,
ttl_seconds: Option<u64>,
) -> Result<ApiKeyValidationResult, E>
pub async fn validate_key_with_fallback<F, Fut, E>( &self, api_key: &str, validator: F, config: Option<&BarnacleConfig>, ttl_seconds: Option<u64>, ) -> Result<ApiKeyValidationResult, E>
Validates an API key with a fallback mechanism:
- First checks if the key exists in Redis
- If not, calls the provided validator function
- If the validator returns a valid result, saves the key to Redis
This is useful for validating API keys against a database only when needed
Sourcepub async fn invalidate_all_keys(&self) -> Result<u32, BarnacleError>
pub async fn invalidate_all_keys(&self) -> Result<u32, BarnacleError>
Invalidates all API keys from the Redis cache This is useful when API keys are modified in the database
Trait Implementations§
Source§impl ApiKeyStore for RedisApiKeyStore
impl ApiKeyStore for RedisApiKeyStore
Source§fn validate_key<'life0, 'life1, 'async_trait>(
&'life0 self,
api_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = ApiKeyValidationResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn validate_key<'life0, 'life1, 'async_trait>(
&'life0 self,
api_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = ApiKeyValidationResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Validate an API key and return its configuration
Source§fn get_rate_limit_config<'life0, 'life1, 'async_trait>(
&'life0 self,
api_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Option<BarnacleConfig>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_rate_limit_config<'life0, 'life1, 'async_trait>(
&'life0 self,
api_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Option<BarnacleConfig>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Optional: Get rate limit configuration for a specific key
This allows for dynamic per-key configuration
Source§fn try_cache_key<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
api_key: &'life1 str,
config: &'life2 BarnacleConfig,
ttl_seconds: Option<u64>,
) -> Pin<Box<dyn Future<Output = Result<(), BarnacleError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn try_cache_key<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
api_key: &'life1 str,
config: &'life2 BarnacleConfig,
ttl_seconds: Option<u64>,
) -> Pin<Box<dyn Future<Output = Result<(), BarnacleError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Optional: Cache a validated API key for future requests
Default implementation does nothing - stores can override if they support caching
Source§impl Clone for RedisApiKeyStore
impl Clone for RedisApiKeyStore
Source§fn clone(&self) -> RedisApiKeyStore
fn clone(&self) -> RedisApiKeyStore
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreAuto Trait Implementations§
impl Freeze for RedisApiKeyStore
impl !RefUnwindSafe for RedisApiKeyStore
impl Send for RedisApiKeyStore
impl Sync for RedisApiKeyStore
impl Unpin for RedisApiKeyStore
impl !UnwindSafe for RedisApiKeyStore
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more