atrium_api/agent/atp_agent/
store.rs1use super::AtpSession;
2use crate::agent::AuthorizationProvider;
3use atrium_common::store::{memory::MemoryStore, Store};
4use atrium_xrpc::types::AuthorizationToken;
5
6#[cfg_attr(not(target_arch = "wasm32"), trait_variant::make(Send))]
7pub trait AtpSessionStore: Store<(), AtpSession> + AuthorizationProvider {}
8
9pub type MemorySessionStore = MemoryStore<(), AtpSession>;
10
11impl AtpSessionStore for MemorySessionStore {}
12
13impl AuthorizationProvider for MemorySessionStore {
14 async fn authorization_token(&self, is_refresh: bool) -> Option<AuthorizationToken> {
15 self.get(&())
16 .await
17 .ok()
18 .flatten()
19 .map(
20 |session| {
21 if is_refresh {
22 session.refresh_jwt.clone()
23 } else {
24 session.access_jwt.clone()
25 }
26 },
27 )
28 .map(AuthorizationToken::Bearer)
29 }
30}