tab_websocket/resource/
listener.rs

1use lifeline::{impl_storage_clone, impl_storage_take};
2use tokio::net::TcpListener;
3
4/// A resource which wraps an established TCP listener.  Taken from the bus
5#[derive(Debug)]
6pub struct WebsocketListenerResource(pub TcpListener);
7
8impl_storage_take!(WebsocketListenerResource);
9
10/// A resource which defines an authentication token.  When present with a Some value,
11/// connections must provide this token in the Authorization header.
12#[derive(Debug, Clone)]
13pub struct WebsocketAuthToken(pub Option<String>);
14
15impl_storage_clone!(WebsocketAuthToken);
16
17impl WebsocketAuthToken {
18    pub fn new(token: Option<String>) -> Self {
19        Self(token)
20    }
21}
22
23impl From<&str> for WebsocketAuthToken {
24    fn from(str: &str) -> Self {
25        WebsocketAuthToken(Some(str.to_string()))
26    }
27}
28
29impl From<String> for WebsocketAuthToken {
30    fn from(str: String) -> Self {
31        WebsocketAuthToken(Some(str))
32    }
33}
34
35impl WebsocketAuthToken {
36    pub fn unauthenticated() -> Self {
37        Self(None)
38    }
39}