]> Untitled Git - lemmy.git/blob - crates/api_common/src/context.rs
Activitypub crate rewrite (#2782)
[lemmy.git] / crates / api_common / src / context.rs
1 use crate::websocket::chat_server::ChatServer;
2 use lemmy_db_schema::{source::secret::Secret, utils::DbPool};
3 use lemmy_utils::{
4   rate_limit::RateLimitCell,
5   settings::{structs::Settings, SETTINGS},
6 };
7 use reqwest_middleware::ClientWithMiddleware;
8 use std::sync::Arc;
9
10 #[derive(Clone)]
11 pub struct LemmyContext {
12   pool: DbPool,
13   chat_server: Arc<ChatServer>,
14   client: Arc<ClientWithMiddleware>,
15   secret: Arc<Secret>,
16   rate_limit_cell: RateLimitCell,
17 }
18
19 impl LemmyContext {
20   pub fn create(
21     pool: DbPool,
22     chat_server: Arc<ChatServer>,
23     client: ClientWithMiddleware,
24     secret: Secret,
25     rate_limit_cell: RateLimitCell,
26   ) -> LemmyContext {
27     LemmyContext {
28       pool,
29       chat_server,
30       client: Arc::new(client),
31       secret: Arc::new(secret),
32       rate_limit_cell,
33     }
34   }
35   pub fn pool(&self) -> &DbPool {
36     &self.pool
37   }
38   pub fn chat_server(&self) -> &Arc<ChatServer> {
39     &self.chat_server
40   }
41   pub fn client(&self) -> &ClientWithMiddleware {
42     &self.client
43   }
44   pub fn settings(&self) -> &'static Settings {
45     &SETTINGS
46   }
47   pub fn secret(&self) -> &Secret {
48     &self.secret
49   }
50   pub fn settings_updated_channel(&self) -> &RateLimitCell {
51     &self.rate_limit_cell
52   }
53 }