1#![cfg_attr(docsrs, feature(doc_cfg))]
3
4#![deny(missing_docs)]
5
6use serde::{Serialize, Deserialize};
7
8#[derive(Serialize, Deserialize, Debug, Clone, Copy, Eq, PartialEq, Hash)]
10pub struct SessionKey(pub uuid::Uuid);
11
12#[cfg(feature="uuid-v4")]
13impl SessionKey {
14 #[cfg_attr(docsrs, doc(cfg(feature = "uuid-v4")))]
16 pub fn new() -> Self {
17 SessionKey(uuid::Uuid::new_v4())
18 }
19}
20
21#[derive(Serialize, Deserialize, Debug, Clone, Copy, Eq, PartialEq, Hash)]
23pub struct ConnectionKey(pub u32);
24
25#[derive(Clone, Debug)]
27pub struct CallbackDataAndSession<T> {
28 pub payload: T,
30 pub session_key: SessionKey,
32}
33
34#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
36pub enum AccessToken {
37 NoToken,
39 PreSharedToken(String),
41}
42
43impl AccessToken {
44 pub fn does_match(&self, test_str: &str) -> bool {
46 match self {
47 &AccessToken::NoToken => true,
48 &AccessToken::PreSharedToken(ref s) => s==test_str,
49 }
50 }
51}