]> Untitled Git - lemmy.git/blob - crates/api_common/src/lib.rs
bcd603e5f150e3982d12ec18ef30b3cebd7b7dad
[lemmy.git] / crates / api_common / src / lib.rs
1 pub mod comment;
2 pub mod community;
3 pub mod person;
4 pub mod post;
5 pub mod private_message;
6 #[cfg(feature = "full")]
7 pub mod request;
8 pub mod sensitive;
9 pub mod site;
10 #[cfg(feature = "full")]
11 pub mod utils;
12 pub mod websocket;
13
14 #[macro_use]
15 extern crate strum_macros;
16 pub extern crate lemmy_db_schema;
17 pub extern crate lemmy_db_views;
18 pub extern crate lemmy_db_views_actor;
19 pub extern crate lemmy_db_views_moderator;
20
21 use crate::websocket::chat_server::ChatServer;
22 use actix::Addr;
23 use lemmy_db_schema::{source::secret::Secret, utils::DbPool};
24 use lemmy_utils::{
25   rate_limit::RateLimitCell,
26   settings::{structs::Settings, SETTINGS},
27 };
28 use reqwest_middleware::ClientWithMiddleware;
29
30 pub struct LemmyContext {
31   pool: DbPool,
32   chat_server: Addr<ChatServer>,
33   client: ClientWithMiddleware,
34   settings: Settings,
35   secret: Secret,
36   rate_limit_cell: RateLimitCell,
37 }
38
39 impl LemmyContext {
40   pub fn create(
41     pool: DbPool,
42     chat_server: Addr<ChatServer>,
43     client: ClientWithMiddleware,
44     settings: Settings,
45     secret: Secret,
46     settings_updated_channel: RateLimitCell,
47   ) -> LemmyContext {
48     LemmyContext {
49       pool,
50       chat_server,
51       client,
52       settings,
53       secret,
54       rate_limit_cell: settings_updated_channel,
55     }
56   }
57   pub fn pool(&self) -> &DbPool {
58     &self.pool
59   }
60   pub fn chat_server(&self) -> &Addr<ChatServer> {
61     &self.chat_server
62   }
63   pub fn client(&self) -> &ClientWithMiddleware {
64     &self.client
65   }
66   pub fn settings(&self) -> &'static Settings {
67     &SETTINGS
68   }
69   pub fn secret(&self) -> &Secret {
70     &self.secret
71   }
72   pub fn settings_updated_channel(&self) -> &RateLimitCell {
73     &self.rate_limit_cell
74   }
75 }
76
77 impl Clone for LemmyContext {
78   fn clone(&self) -> Self {
79     LemmyContext {
80       pool: self.pool.clone(),
81       chat_server: self.chat_server.clone(),
82       client: self.client.clone(),
83       settings: self.settings.clone(),
84       secret: self.secret.clone(),
85       rate_limit_cell: self.rate_limit_cell.clone(),
86     }
87   }
88 }