implemented channels on server
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
#include "responses.h"
|
||||
|
||||
#define LOGGER conn->server->logger
|
||||
#define LOG_FUNC conn->server->log_func
|
||||
#define srv conn->server
|
||||
#define LOGGER srv->logger
|
||||
#define LOG_FUNC srv->log_func
|
||||
#define LOG_CONTEXT log_ctx
|
||||
|
||||
declare_RequestHandler(SendMessage)
|
||||
@@ -14,6 +15,14 @@ declare_RequestHandler(SendMessage)
|
||||
try_void(PacketHeader_validateContentSize(req_head, sizeof(req)));
|
||||
try_void(EncryptedSocketTCP_recvStruct(&conn->sock, &req));
|
||||
|
||||
if(!conn->authorized){
|
||||
try_void(sendErrorMessage(log_ctx, conn, res_head,
|
||||
LogSeverity_Warn,
|
||||
STR("is not authorized")
|
||||
));
|
||||
Return RESULT_VOID;
|
||||
}
|
||||
|
||||
if(req.data_size < MESSAGE_SIZE_MIN || req.data_size > MESSAGE_SIZE_MAX){
|
||||
try_void(sendErrorMessage_f(log_ctx, conn, res_head,
|
||||
LogSeverity_Warn,
|
||||
@@ -28,16 +37,24 @@ declare_RequestHandler(SendMessage)
|
||||
Array(u8) message_data = Array_u8_alloc(req.data_size);
|
||||
try_void(EncryptedSocketTCP_recv(&conn->sock, message_data, SocketRecvFlag_WholeBuffer));
|
||||
|
||||
for(u16 i = 0; i < message_data.len; i++){
|
||||
u8 b = message_data.data[i];
|
||||
// save message to channel
|
||||
Channel* ch = Server_tryGetChannel(conn->server, req.channel_id);
|
||||
if(ch == NULL){
|
||||
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));
|
||||
|
||||
// send response
|
||||
// SendMessageResponse res;
|
||||
// SendMessageResponse_construct(&res, res_head, );
|
||||
// try_void(EncryptedSocketTCP_sendStruct(&conn->sock, res_head));
|
||||
// try_void(EncryptedSocketTCP_sendStruct(&conn->sock, &res));
|
||||
SendMessageResponse res;
|
||||
SendMessageResponse_construct(&res, res_head,
|
||||
message_meta.id, message_meta.receiving_time_utc);
|
||||
try_void(EncryptedSocketTCP_sendStruct(&conn->sock, res_head));
|
||||
try_void(EncryptedSocketTCP_sendStruct(&conn->sock, &res));
|
||||
|
||||
Return RESULT_VOID;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user