]> Untitled Git - lemmy.git/blob - server/src/websocket/messages.rs
routes.api: fix get_captcha endpoint (#1135)
[lemmy.git] / server / src / websocket / messages.rs
1 use crate::websocket::UserOperation;
2 use actix::{prelude::*, Recipient};
3 use lemmy_api_structs::{comment::CommentResponse, post::PostResponse};
4 use lemmy_utils::{CommunityId, ConnectionId, IPAddr, PostId, UserId};
5 use serde::{Deserialize, Serialize};
6
7 /// Chat server sends this messages to session
8 #[derive(Message)]
9 #[rtype(result = "()")]
10 pub struct WSMessage(pub String);
11
12 /// Message for chat server communications
13
14 /// New chat session is created
15 #[derive(Message)]
16 #[rtype(usize)]
17 pub struct Connect {
18   pub addr: Recipient<WSMessage>,
19   pub ip: IPAddr,
20 }
21
22 /// Session is disconnected
23 #[derive(Message)]
24 #[rtype(result = "()")]
25 pub struct Disconnect {
26   pub id: ConnectionId,
27   pub ip: IPAddr,
28 }
29
30 /// The messages sent to websocket clients
31 #[derive(Serialize, Deserialize, Message)]
32 #[rtype(result = "Result<String, std::convert::Infallible>")]
33 pub struct StandardMessage {
34   /// Id of the client session
35   pub id: ConnectionId,
36   /// Peer message
37   pub msg: String,
38 }
39
40 #[derive(Message)]
41 #[rtype(result = "()")]
42 pub struct SendAllMessage<Response> {
43   pub op: UserOperation,
44   pub response: Response,
45   pub websocket_id: Option<ConnectionId>,
46 }
47
48 #[derive(Message)]
49 #[rtype(result = "()")]
50 pub struct SendUserRoomMessage<Response> {
51   pub op: UserOperation,
52   pub response: Response,
53   pub recipient_id: UserId,
54   pub websocket_id: Option<ConnectionId>,
55 }
56
57 #[derive(Message)]
58 #[rtype(result = "()")]
59 pub struct SendCommunityRoomMessage<Response> {
60   pub op: UserOperation,
61   pub response: Response,
62   pub community_id: CommunityId,
63   pub websocket_id: Option<ConnectionId>,
64 }
65
66 #[derive(Message)]
67 #[rtype(result = "()")]
68 pub struct SendPost {
69   pub op: UserOperation,
70   pub post: PostResponse,
71   pub websocket_id: Option<ConnectionId>,
72 }
73
74 #[derive(Message)]
75 #[rtype(result = "()")]
76 pub struct SendComment {
77   pub op: UserOperation,
78   pub comment: CommentResponse,
79   pub websocket_id: Option<ConnectionId>,
80 }
81
82 #[derive(Message)]
83 #[rtype(result = "()")]
84 pub struct JoinUserRoom {
85   pub user_id: UserId,
86   pub id: ConnectionId,
87 }
88
89 #[derive(Message)]
90 #[rtype(result = "()")]
91 pub struct JoinCommunityRoom {
92   pub community_id: CommunityId,
93   pub id: ConnectionId,
94 }
95
96 #[derive(Message)]
97 #[rtype(result = "()")]
98 pub struct JoinPostRoom {
99   pub post_id: PostId,
100   pub id: ConnectionId,
101 }
102
103 #[derive(Message)]
104 #[rtype(usize)]
105 pub struct GetUsersOnline;
106
107 #[derive(Message)]
108 #[rtype(usize)]
109 pub struct GetPostUsersOnline {
110   pub post_id: PostId,
111 }
112
113 #[derive(Message)]
114 #[rtype(usize)]
115 pub struct GetCommunityUsersOnline {
116   pub community_id: CommunityId,
117 }
118
119 #[derive(Message, Debug)]
120 #[rtype(result = "()")]
121 pub struct CaptchaItem {
122   pub uuid: String,
123   pub answer: String,
124   pub expires: chrono::NaiveDateTime,
125 }
126
127 #[derive(Message)]
128 #[rtype(bool)]
129 pub struct CheckCaptcha {
130   pub uuid: String,
131   pub answer: String,
132 }