]> Untitled Git - lemmy.git/blob - crates/api_common/src/websocket/mod.rs
8686b8e4f8289163fdf0814375195202cedaf9d5
[lemmy.git] / crates / api_common / src / websocket / mod.rs
1 use lemmy_utils::error::LemmyError;
2 use serde::Serialize;
3
4 pub mod chat_server;
5 pub mod handlers;
6 pub mod send;
7 pub mod structs;
8
9 #[derive(Serialize)]
10 struct WebsocketResponse<T> {
11   op: String,
12   data: T,
13 }
14
15 pub fn serialize_websocket_message<OP, Response>(
16   op: &OP,
17   data: &Response,
18 ) -> Result<String, LemmyError>
19 where
20   Response: Serialize,
21   OP: ToString,
22 {
23   let response = WebsocketResponse {
24     op: op.to_string(),
25     data,
26   };
27   Ok(serde_json::to_string(&response)?)
28 }
29
30 #[derive(EnumString, Display, Debug, Clone)]
31 pub enum UserOperation {
32   Login,
33   GetCaptcha,
34   SaveComment,
35   CreateCommentLike,
36   CreateCommentReport,
37   ResolveCommentReport,
38   ListCommentReports,
39   CreatePostLike,
40   LockPost,
41   StickyPost,
42   MarkPostAsRead,
43   SavePost,
44   CreatePostReport,
45   ResolvePostReport,
46   ListPostReports,
47   GetReportCount,
48   GetUnreadCount,
49   VerifyEmail,
50   FollowCommunity,
51   GetReplies,
52   GetPersonMentions,
53   MarkPersonMentionAsRead,
54   MarkCommentReplyAsRead,
55   GetModlog,
56   BanFromCommunity,
57   AddModToCommunity,
58   AddAdmin,
59   GetUnreadRegistrationApplicationCount,
60   ListRegistrationApplications,
61   ApproveRegistrationApplication,
62   BanPerson,
63   GetBannedPersons,
64   MarkAllAsRead,
65   SaveUserSettings,
66   TransferCommunity,
67   LeaveAdmin,
68   PasswordReset,
69   PasswordChange,
70   MarkPrivateMessageAsRead,
71   CreatePrivateMessageReport,
72   ResolvePrivateMessageReport,
73   ListPrivateMessageReports,
74   UserJoin,
75   PostJoin,
76   CommunityJoin,
77   ModJoin,
78   ChangePassword,
79   GetSiteMetadata,
80   BlockCommunity,
81   BlockPerson,
82   PurgePerson,
83   PurgeCommunity,
84   PurgePost,
85   PurgeComment,
86 }
87
88 #[derive(EnumString, Display, Debug, Clone)]
89 pub enum UserOperationCrud {
90   // Site
91   CreateSite,
92   GetSite,
93   EditSite,
94   // Community
95   CreateCommunity,
96   ListCommunities,
97   EditCommunity,
98   DeleteCommunity,
99   RemoveCommunity,
100   // Post
101   CreatePost,
102   GetPost,
103   EditPost,
104   DeletePost,
105   RemovePost,
106   // Comment
107   CreateComment,
108   GetComment,
109   EditComment,
110   DeleteComment,
111   RemoveComment,
112   // User
113   Register,
114   DeleteAccount,
115   // Private Message
116   CreatePrivateMessage,
117   GetPrivateMessages,
118   EditPrivateMessage,
119   DeletePrivateMessage,
120 }
121
122 #[derive(EnumString, Display, Debug, Clone)]
123 pub enum UserOperationApub {
124   GetPosts,
125   GetCommunity,
126   GetComments,
127   GetPersonDetails,
128   Search,
129   ResolveObject,
130 }
131
132 pub trait OperationType {}
133
134 impl OperationType for UserOperationCrud {}
135
136 impl OperationType for UserOperation {}
137
138 impl OperationType for UserOperationApub {}