client: implements event/updates websocket
This commit is contained in:
@@ -2,11 +2,18 @@ use async_trait::async_trait;
|
||||
pub use crate::model::{
|
||||
Conversation, Message, ConversationID, MessageID,
|
||||
};
|
||||
|
||||
pub mod auth;
|
||||
pub use crate::api::auth::{AuthenticationStore, InMemoryAuthenticationStore};
|
||||
|
||||
use crate::model::JwtToken;
|
||||
|
||||
pub mod http_client;
|
||||
pub use http_client::HTTPAPIClient;
|
||||
|
||||
pub mod event_socket;
|
||||
pub use event_socket::EventSocket;
|
||||
|
||||
use self::http_client::Credentials;
|
||||
|
||||
#[async_trait]
|
||||
@@ -30,46 +37,7 @@ pub trait APIInterface {
|
||||
|
||||
// (POST) /authenticate
|
||||
async fn authenticate(&mut self, credentials: Credentials) -> Result<JwtToken, Self::Error>;
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
pub trait AuthenticationStore {
|
||||
async fn get_credentials(&mut self) -> Option<Credentials>;
|
||||
async fn get_token(&mut self) -> Option<JwtToken>;
|
||||
async fn set_token(&mut self, token: JwtToken);
|
||||
}
|
||||
|
||||
pub struct InMemoryAuthenticationStore {
|
||||
credentials: Option<Credentials>,
|
||||
token: Option<JwtToken>,
|
||||
}
|
||||
|
||||
impl Default for InMemoryAuthenticationStore {
|
||||
fn default() -> Self {
|
||||
Self::new(None)
|
||||
}
|
||||
}
|
||||
|
||||
impl InMemoryAuthenticationStore {
|
||||
pub fn new(credentials: Option<Credentials>) -> Self {
|
||||
Self {
|
||||
credentials,
|
||||
token: None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl AuthenticationStore for InMemoryAuthenticationStore {
|
||||
async fn get_credentials(&mut self) -> Option<Credentials> {
|
||||
self.credentials.clone()
|
||||
}
|
||||
|
||||
async fn get_token(&mut self) -> Option<JwtToken> {
|
||||
self.token.clone()
|
||||
}
|
||||
|
||||
async fn set_token(&mut self, token: JwtToken) {
|
||||
self.token = Some(token);
|
||||
}
|
||||
|
||||
// (WS) /updates
|
||||
async fn open_event_socket(&mut self) -> Result<impl EventSocket, Self::Error>;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user