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