aboutsummaryrefslogtreecommitdiff
path: root/command.c
diff options
context:
space:
mode:
authortomsmeding <tom.smeding@gmail.com>2017-03-14 14:06:14 +0100
committertomsmeding <tom.smeding@gmail.com>2017-03-14 14:06:14 +0100
commita7a5b95990e0d6c1617c796dba2c45dab816161d (patch)
treeac58c3975e4eb0b546669bbcfe658cacf8ebfd8b /command.c
parent230e9775f5b61e21aa085825fbbd0232e9a360ef (diff)
Inviting
Diffstat (limited to 'command.c')
-rw-r--r--command.c29
1 files changed, 28 insertions, 1 deletions
diff --git a/command.c b/command.c
index 9d5e2e8..30d2223 100644
--- a/command.c
+++ b/command.c
@@ -95,7 +95,7 @@ static bool cmd_register(struct conn_data *data,const char *tag,const char **arg
static bool cmd_login(struct conn_data *data,const char *tag,const char **args){
i64 userid=db_find_user(args[0]);
if(userid==-1){
- send_error(data->fd,tag,"Username does not exist");
+ send_error(data->fd,tag,"User not found");
return false;
}
char *pass=db_get_pass(userid);
@@ -144,6 +144,32 @@ static bool cmd_create_room(struct conn_data *data,const char *tag,const char **
return closed;
}
+static bool cmd_invite(struct conn_data *data,const char *tag,const char **args){
+ if(data->userid==-1){
+ send_error(data->fd,tag,"Not logged in");
+ return false;
+ }
+ i64 roomid=db_find_room(args[0]);
+ if(roomid==-1){
+ send_error(data->fd,tag,"Room not found");
+ return false;
+ }
+
+ i64 user2=db_find_user(args[1]);
+ if(user2==-1){
+ send_error(data->fd,tag,"User not found");
+ return false;
+ }
+
+ if(!db_is_member(roomid,data->userid)){
+ send_error(data->fd,tag,"Not in that room");
+ return false;
+ }
+
+ db_add_member(roomid,user2);
+ return send_ok(data->fd,tag);
+}
+
struct cmd_info{
const char *cmdname;
@@ -157,6 +183,7 @@ static const struct cmd_info commands[]={
{"login",2,true,cmd_login},
{"list_rooms",0,false,cmd_list_rooms},
{"create_room",0,false,cmd_create_room},
+ {"invite",2,false,cmd_invite},
};
#define NCOMMANDS (sizeof(commands)/sizeof(commands[0]))