tokidator 0.2.1

Token based authentication framework
Documentation
use std::hash::Hash;
use std::ops::Deref;

use num_traits::{FromPrimitive, ToPrimitive};

pub use validator::AccessEnforcer;
pub use validator::ValidationAuthority;

use crate::policy::{PolicyCount, PolicySet};

pub trait PolicyAccessToken: Sized {
    type Policy: Hash + Eq + FromPrimitive + ToPrimitive + PolicyCount;

    fn policies(&self) -> &PolicySet<Self::Policy>;
    fn is_expired(&self) -> bool;
    fn to_bytes(&self) -> Vec<u8>;
    fn from_bytes(buf: &[u8]) -> Option<Self>;
}

pub trait ToTokenStr {
    fn to_str(&self) -> Option<&str>;
}

impl<T> ToTokenStr for Option<T>
    where T: Deref<Target=str> {
    fn to_str(&self) -> Option<&str> {
        self.as_deref()
    }
}

#[cfg(test)]
pub mod tests;

mod validator;