implemented CommonQueries
This commit is contained in:
@@ -21,6 +21,7 @@ declare_RequestHandler(SendMessage)
|
||||
Return RESULT_VOID;
|
||||
}
|
||||
|
||||
// validate content size
|
||||
if(req.data_size < MESSAGE_SIZE_MIN || req.data_size > MESSAGE_SIZE_MAX){
|
||||
try_void(sendErrorMessage(log_ctx, conn, res_head,
|
||||
LogSeverity_Warn, STR("invalid message size") ));
|
||||
@@ -29,24 +30,26 @@ declare_RequestHandler(SendMessage)
|
||||
}
|
||||
|
||||
// receive message data
|
||||
Array(u8) message_data = Array_u8_alloc(req.data_size);
|
||||
try_void(EncryptedSocketTCP_recv(&conn->sock, message_data, SocketRecvFlag_WholeBuffer));
|
||||
try_void(EncryptedSocketTCP_recv(&conn->sock, conn->message_content, SocketRecvFlag_WholeBuffer));
|
||||
|
||||
// save message to channel
|
||||
Channel* ch = Server_tryGetChannel(conn->server, req.channel_id);
|
||||
if(ch == NULL){
|
||||
// validate channel id
|
||||
try(bool channel_exists, i, Channel_exists(conn->queries.common, req.channel_id));
|
||||
if(!channel_exists){
|
||||
try_void(sendErrorMessage(log_ctx, conn, res_head,
|
||||
LogSeverity_Warn, STR("invalid channel id") ));
|
||||
Return RESULT_VOID;
|
||||
}
|
||||
MessageMeta message_meta;
|
||||
try_void(Channel_saveMessage(ch, message_data, conn->user_id,
|
||||
&message_meta, true));
|
||||
|
||||
// save message to channel
|
||||
DateTime timestamp;
|
||||
try(i64 message_id, i, Channel_saveMessage(conn->queries.common,
|
||||
req.channel_id, conn->user_id, conn->message_content,
|
||||
×tamp));
|
||||
|
||||
// send response
|
||||
SendMessageResponse res;
|
||||
SendMessageResponse_construct(&res, res_head,
|
||||
message_meta.id, message_meta.receiving_time_utc);
|
||||
message_id, timestamp);
|
||||
try_void(EncryptedSocketTCP_sendStruct(&conn->sock, res_head));
|
||||
try_void(EncryptedSocketTCP_sendStruct(&conn->sock, &res));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user