]> Untitled Git - lemmy.git/blob - crates/api_common/src/site.rs
0000ecd3d7c51aef2dd8618f3f80b7a0ef42ca56
[lemmy.git] / crates / api_common / src / site.rs
1 use crate::sensitive::Sensitive;
2 use lemmy_db_schema::{
3   newtypes::{CommentId, CommunityId, LanguageId, PersonId, PostId},
4   source::{
5     instance::Instance,
6     language::Language,
7     local_site::RegistrationMode,
8     tagline::Tagline,
9   },
10   ListingType,
11   ModlogActionType,
12   SearchType,
13   SortType,
14 };
15 use lemmy_db_views::structs::{
16   CommentView,
17   LocalUserView,
18   PostView,
19   RegistrationApplicationView,
20   SiteView,
21 };
22 use lemmy_db_views_actor::structs::{
23   CommunityBlockView,
24   CommunityFollowerView,
25   CommunityModeratorView,
26   CommunityView,
27   PersonBlockView,
28   PersonView,
29 };
30 use lemmy_db_views_moderator::structs::{
31   AdminPurgeCommentView,
32   AdminPurgeCommunityView,
33   AdminPurgePersonView,
34   AdminPurgePostView,
35   ModAddCommunityView,
36   ModAddView,
37   ModBanFromCommunityView,
38   ModBanView,
39   ModFeaturePostView,
40   ModHideCommunityView,
41   ModLockPostView,
42   ModRemoveCommentView,
43   ModRemoveCommunityView,
44   ModRemovePostView,
45   ModTransferCommunityView,
46 };
47 use serde::{Deserialize, Serialize};
48
49 #[derive(Debug, Serialize, Deserialize, Clone, Default)]
50 pub struct Search {
51   pub q: String,
52   pub community_id: Option<CommunityId>,
53   pub community_name: Option<String>,
54   pub creator_id: Option<PersonId>,
55   pub type_: Option<SearchType>,
56   pub sort: Option<SortType>,
57   pub listing_type: Option<ListingType>,
58   pub page: Option<i64>,
59   pub limit: Option<i64>,
60   pub auth: Option<Sensitive<String>>,
61 }
62
63 #[derive(Debug, Serialize, Deserialize, Clone)]
64 pub struct SearchResponse {
65   pub type_: String,
66   pub comments: Vec<CommentView>,
67   pub posts: Vec<PostView>,
68   pub communities: Vec<CommunityView>,
69   pub users: Vec<PersonView>,
70 }
71
72 #[derive(Debug, Serialize, Deserialize, Clone, Default)]
73 pub struct ResolveObject {
74   pub q: String,
75   pub auth: Option<Sensitive<String>>,
76 }
77
78 #[derive(Debug, Serialize, Deserialize, Default)]
79 pub struct ResolveObjectResponse {
80   pub comment: Option<CommentView>,
81   pub post: Option<PostView>,
82   pub community: Option<CommunityView>,
83   pub person: Option<PersonView>,
84 }
85
86 #[derive(Debug, Serialize, Deserialize, Clone, Default)]
87 pub struct GetModlog {
88   pub mod_person_id: Option<PersonId>,
89   pub community_id: Option<CommunityId>,
90   pub page: Option<i64>,
91   pub limit: Option<i64>,
92   pub auth: Option<Sensitive<String>>,
93   pub type_: Option<ModlogActionType>,
94   pub other_person_id: Option<PersonId>,
95 }
96
97 #[derive(Debug, Serialize, Deserialize, Clone)]
98 pub struct GetModlogResponse {
99   pub removed_posts: Vec<ModRemovePostView>,
100   pub locked_posts: Vec<ModLockPostView>,
101   pub featured_posts: Vec<ModFeaturePostView>,
102   pub removed_comments: Vec<ModRemoveCommentView>,
103   pub removed_communities: Vec<ModRemoveCommunityView>,
104   pub banned_from_community: Vec<ModBanFromCommunityView>,
105   pub banned: Vec<ModBanView>,
106   pub added_to_community: Vec<ModAddCommunityView>,
107   pub transferred_to_community: Vec<ModTransferCommunityView>,
108   pub added: Vec<ModAddView>,
109   pub admin_purged_persons: Vec<AdminPurgePersonView>,
110   pub admin_purged_communities: Vec<AdminPurgeCommunityView>,
111   pub admin_purged_posts: Vec<AdminPurgePostView>,
112   pub admin_purged_comments: Vec<AdminPurgeCommentView>,
113   pub hidden_communities: Vec<ModHideCommunityView>,
114 }
115
116 #[derive(Debug, Serialize, Deserialize, Clone, Default)]
117 pub struct CreateSite {
118   pub name: String,
119   pub sidebar: Option<String>,
120   pub description: Option<String>,
121   pub icon: Option<String>,
122   pub banner: Option<String>,
123   pub enable_downvotes: Option<bool>,
124   pub enable_nsfw: Option<bool>,
125   pub community_creation_admin_only: Option<bool>,
126   pub require_email_verification: Option<bool>,
127   pub application_question: Option<String>,
128   pub private_instance: Option<bool>,
129   pub default_theme: Option<String>,
130   pub default_post_listing_type: Option<String>,
131   pub legal_information: Option<String>,
132   pub application_email_admins: Option<bool>,
133   pub hide_modlog_mod_names: Option<bool>,
134   pub discussion_languages: Option<Vec<LanguageId>>,
135   pub slur_filter_regex: Option<String>,
136   pub actor_name_max_length: Option<i32>,
137   pub rate_limit_message: Option<i32>,
138   pub rate_limit_message_per_second: Option<i32>,
139   pub rate_limit_post: Option<i32>,
140   pub rate_limit_post_per_second: Option<i32>,
141   pub rate_limit_register: Option<i32>,
142   pub rate_limit_register_per_second: Option<i32>,
143   pub rate_limit_image: Option<i32>,
144   pub rate_limit_image_per_second: Option<i32>,
145   pub rate_limit_comment: Option<i32>,
146   pub rate_limit_comment_per_second: Option<i32>,
147   pub rate_limit_search: Option<i32>,
148   pub rate_limit_search_per_second: Option<i32>,
149   pub federation_enabled: Option<bool>,
150   pub federation_debug: Option<bool>,
151   pub federation_worker_count: Option<i32>,
152   pub captcha_enabled: Option<bool>,
153   pub captcha_difficulty: Option<String>,
154   pub allowed_instances: Option<Vec<String>>,
155   pub blocked_instances: Option<Vec<String>>,
156   pub taglines: Option<Vec<String>>,
157   pub registration_mode: Option<RegistrationMode>,
158   pub auth: Sensitive<String>,
159 }
160
161 #[derive(Debug, Serialize, Deserialize, Clone, Default)]
162 pub struct EditSite {
163   pub name: Option<String>,
164   pub sidebar: Option<String>,
165   pub description: Option<String>,
166   pub icon: Option<String>,
167   pub banner: Option<String>,
168   pub enable_downvotes: Option<bool>,
169   pub enable_nsfw: Option<bool>,
170   pub community_creation_admin_only: Option<bool>,
171   pub require_email_verification: Option<bool>,
172   pub application_question: Option<String>,
173   pub private_instance: Option<bool>,
174   pub default_theme: Option<String>,
175   pub default_post_listing_type: Option<String>,
176   pub legal_information: Option<String>,
177   pub application_email_admins: Option<bool>,
178   pub hide_modlog_mod_names: Option<bool>,
179   pub discussion_languages: Option<Vec<LanguageId>>,
180   pub slur_filter_regex: Option<String>,
181   pub actor_name_max_length: Option<i32>,
182   pub rate_limit_message: Option<i32>,
183   pub rate_limit_message_per_second: Option<i32>,
184   pub rate_limit_post: Option<i32>,
185   pub rate_limit_post_per_second: Option<i32>,
186   pub rate_limit_register: Option<i32>,
187   pub rate_limit_register_per_second: Option<i32>,
188   pub rate_limit_image: Option<i32>,
189   pub rate_limit_image_per_second: Option<i32>,
190   pub rate_limit_comment: Option<i32>,
191   pub rate_limit_comment_per_second: Option<i32>,
192   pub rate_limit_search: Option<i32>,
193   pub rate_limit_search_per_second: Option<i32>,
194   pub federation_enabled: Option<bool>,
195   pub federation_debug: Option<bool>,
196   pub federation_worker_count: Option<i32>,
197   pub captcha_enabled: Option<bool>,
198   pub captcha_difficulty: Option<String>,
199   pub allowed_instances: Option<Vec<String>>,
200   pub blocked_instances: Option<Vec<String>>,
201   pub taglines: Option<Vec<String>>,
202   pub registration_mode: Option<RegistrationMode>,
203   pub reports_email_admins: Option<bool>,
204   pub auth: Sensitive<String>,
205 }
206
207 #[derive(Debug, Serialize, Deserialize, Clone, Default)]
208 pub struct GetSite {
209   pub auth: Option<Sensitive<String>>,
210 }
211
212 #[derive(Debug, Serialize, Deserialize, Clone)]
213 pub struct SiteResponse {
214   pub site_view: SiteView,
215 }
216
217 #[derive(Debug, Serialize, Deserialize, Clone)]
218 pub struct GetSiteResponse {
219   pub site_view: SiteView,
220   pub admins: Vec<PersonView>,
221   pub online: usize,
222   pub version: String,
223   pub my_user: Option<MyUserInfo>,
224   pub federated_instances: Option<FederatedInstances>, // Federation may be disabled
225   pub all_languages: Vec<Language>,
226   pub discussion_languages: Vec<LanguageId>,
227   pub taglines: Option<Vec<Tagline>>,
228 }
229
230 #[derive(Debug, Serialize, Deserialize, Clone)]
231 pub struct MyUserInfo {
232   pub local_user_view: LocalUserView,
233   pub follows: Vec<CommunityFollowerView>,
234   pub moderates: Vec<CommunityModeratorView>,
235   pub community_blocks: Vec<CommunityBlockView>,
236   pub person_blocks: Vec<PersonBlockView>,
237   pub discussion_languages: Vec<LanguageId>,
238 }
239
240 #[derive(Debug, Serialize, Deserialize, Clone)]
241 pub struct LeaveAdmin {
242   pub auth: Sensitive<String>,
243 }
244
245 #[derive(Debug, Serialize, Deserialize, Clone)]
246 pub struct FederatedInstances {
247   pub linked: Vec<Instance>,
248   pub allowed: Option<Vec<Instance>>,
249   pub blocked: Option<Vec<Instance>>,
250 }
251
252 #[derive(Debug, Serialize, Deserialize, Clone)]
253 pub struct PurgePerson {
254   pub person_id: PersonId,
255   pub reason: Option<String>,
256   pub auth: String,
257 }
258
259 #[derive(Debug, Serialize, Deserialize, Clone)]
260 pub struct PurgeCommunity {
261   pub community_id: CommunityId,
262   pub reason: Option<String>,
263   pub auth: String,
264 }
265
266 #[derive(Debug, Serialize, Deserialize, Clone)]
267 pub struct PurgePost {
268   pub post_id: PostId,
269   pub reason: Option<String>,
270   pub auth: String,
271 }
272
273 #[derive(Debug, Serialize, Deserialize, Clone)]
274 pub struct PurgeComment {
275   pub comment_id: CommentId,
276   pub reason: Option<String>,
277   pub auth: String,
278 }
279
280 #[derive(Serialize, Deserialize)]
281 pub struct PurgeItemResponse {
282   pub success: bool,
283 }
284
285 #[derive(Debug, Serialize, Deserialize, Clone, Default)]
286 pub struct ListRegistrationApplications {
287   /// Only shows the unread applications (IE those without an admin actor)
288   pub unread_only: Option<bool>,
289   pub page: Option<i64>,
290   pub limit: Option<i64>,
291   pub auth: String,
292 }
293
294 #[derive(Debug, Serialize, Deserialize, Clone)]
295 pub struct ListRegistrationApplicationsResponse {
296   pub registration_applications: Vec<RegistrationApplicationView>,
297 }
298
299 #[derive(Debug, Serialize, Deserialize, Clone, Default)]
300 pub struct ApproveRegistrationApplication {
301   pub id: i32,
302   pub approve: bool,
303   pub deny_reason: Option<String>,
304   pub auth: String,
305 }
306
307 #[derive(Debug, Serialize, Deserialize, Clone)]
308 pub struct RegistrationApplicationResponse {
309   pub registration_application: RegistrationApplicationView,
310 }
311
312 #[derive(Debug, Serialize, Deserialize, Clone)]
313 pub struct GetUnreadRegistrationApplicationCount {
314   pub auth: String,
315 }
316
317 #[derive(Debug, Serialize, Deserialize, Clone)]
318 pub struct GetUnreadRegistrationApplicationCountResponse {
319   pub registration_applications: i64,
320 }