]> Untitled Git - lemmy.git/blob - crates/api_common/src/context.rs
Merge pull request #2593 from LemmyNet/refactor-notifications
[lemmy.git] / crates / api_common / src / context.rs
1 use crate::websocket::chat_server::ChatServer;
2 use actix::Addr;
3 use lemmy_db_schema::{source::secret::Secret, utils::DbPool};
4 use lemmy_utils::{
5   rate_limit::RateLimitCell,
6   settings::{structs::Settings, SETTINGS},
7 };
8 use reqwest_middleware::ClientWithMiddleware;
9
10 pub struct LemmyContext {
11   pool: DbPool,
12   chat_server: Addr<ChatServer>,
13   client: ClientWithMiddleware,
14   settings: Settings,
15   secret: Secret,
16   rate_limit_cell: RateLimitCell,
17 }
18
19 impl LemmyContext {
20   pub fn create(
21     pool: DbPool,
22     chat_server: Addr<ChatServer>,
23     client: ClientWithMiddleware,
24     settings: Settings,
25     secret: Secret,
26     rate_limit_cell: RateLimitCell,
27   ) -> LemmyContext {
28     LemmyContext {
29       pool,
30       chat_server,
31       client,
32       settings,
33       secret,
34       rate_limit_cell,
35     }
36   }
37   pub fn pool(&self) -> &DbPool {
38     &self.pool
39   }
40   pub fn chat_server(&self) -> &Addr<ChatServer> {
41     &self.chat_server
42   }
43   pub fn client(&self) -> &ClientWithMiddleware {
44     &self.client
45   }
46   pub fn settings(&self) -> &'static Settings {
47     &SETTINGS
48   }
49   pub fn secret(&self) -> &Secret {
50     &self.secret
51   }
52   pub fn settings_updated_channel(&self) -> &RateLimitCell {
53     &self.rate_limit_cell
54   }
55 }
56
57 impl Clone for LemmyContext {
58   fn clone(&self) -> Self {
59     LemmyContext {
60       pool: self.pool.clone(),
61       chat_server: self.chat_server.clone(),
62       client: self.client.clone(),
63       settings: self.settings.clone(),
64       secret: self.secret.clone(),
65       rate_limit_cell: self.rate_limit_cell.clone(),
66     }
67   }
68 }