my_teams
commands.h
Go to the documentation of this file.
1 /*
2 ** EPITECH PROJECT, 2024
3 ** my_teams [WSL: Arch]
4 ** File description:
5 ** commands
6 */
7 
8 #ifndef COMMANDS_H_
9  #define COMMANDS_H_
10 
11  #include "protocol.h"
12  #include <stdbool.h>
13  #include <stddef.h>
14 
15  #define MAX_NAME_LENGTH 32
16  #define MAX_DESCRIPTION_LENGTH 255
17  #define MAX_BODY_LENGTH 512
18 
19 typedef struct command_s {
20  char *name;
21  char *description;
22  void (*func)(char **args, void *data, p_packet_t *packet);
23  bool need_login;
25 
26 void cmd_help(char **args, void *data, p_packet_t *packet);
27 void cmd_login(char **args, void *data, p_packet_t *packet);
28 void cmd_logout(char **args, void *data, p_packet_t *packet);
29 void cmd_users(char **args, void *data, p_packet_t *packet);
30 void cmd_user(char **args, void *data, p_packet_t *packet);
31 void cmd_send(char **args, void *data, p_packet_t *packet);
32 void cmd_messages(char **args, void *data, p_packet_t *packet);
33 void cmd_subscribe(char **args, void *data, p_packet_t *packet);
34 void cmd_subscribed(char **args, void *data, p_packet_t *packet);
35 void cmd_unsubscribe(char **args, void *data, p_packet_t *packet);
36 void cmd_use(char **args, void *data, p_packet_t *packet);
37 void cmd_create(char **args, void *data, p_packet_t *packet);
38 void cmd_list(char **args, void *data, p_packet_t *packet);
39 void cmd_info(char **args, void *data, p_packet_t *packet);
40 
41 static const command_t commands[] = {
42  {
43  "/help",
44  "/help : show help",
45  cmd_help,
46  false
47  },
48  {
49  "/login",
50  "/login [“user_name”] : set the user_name used by client",
51  cmd_login,
52  false
53  },
54  {
55  "/logout",
56  "/logout : disconnect the client from the server",
57  cmd_logout,
58  true
59  },
60  {
61  "/users",
62  "/users : get the list of all users that exist on the domain",
63  cmd_users,
64  true
65  },
66  {
67  "/user",
68  "/user [“user_uuid”] : get details about the requested user",
69  cmd_user,
70  true
71  },
72  {
73  "/send",
74  "/send [“user_uuid”] [“message_body”] :"
75  " send a message to specific user",
76  cmd_send,
77  true
78  },
79  {
80  "/messages",
81  "/messages [“user_uuid”] : list all messages"
82  " exchanged with the specified user",
84  true
85  },
86  {
87  "/subscribe",
88  "/subscribe [“team_uuid”] : subscribe to the events of a team and "
89  "its sub directories (enable reception of all events from a team)",
91  true
92  },
93  {
94  "/subscribed",
95  "/subscribed ?[“team_uuid”] : list all subscribed teams"
96  " or list all users subscribed to a team",
98  true
99  },
100  {
101  "/unsubscribe",
102  "/unsubscribe [“team_uuid”] : unsubscribe from a team",
104  true
105  },
106  {
107  "/use",
108  "/use ?[“team_uuid”] ?[“channel_uuid”] ?[“thread_uuid”] : "
109  "Sets the command context to a team/channel/thread",
110  cmd_use,
111  true
112  },
113  {
114  "/create",
115  "/create : based on the context, create the"
116  " sub resource (see /help create)",
117  cmd_create,
118  true
119  },
120  {
121  "/list",
122  "/list : based on the context, list all the sub"
123  "resources (see /help list)",
124  cmd_list,
125  true
126  },
127  {
128  "/info",
129  "/info : based on the context, display details of"
130  " the current resource (see /help info)",
131  cmd_info,
132  true
133  },
134  {
135  NULL,
136  NULL,
137  NULL,
138  false
139  }
140 };
141 
142 #endif /* !COMMANDS_H_ */
void cmd_logout(char **args, void *data, p_packet_t *packet)
struct command_s command_t
void cmd_user(char **args, void *data, p_packet_t *packet)
void cmd_login(char **args, void *data, p_packet_t *packet)
void cmd_send(char **args, void *data, p_packet_t *packet)
void cmd_use(char **args, void *data, p_packet_t *packet)
void cmd_info(char **args, void *data, p_packet_t *packet)
void cmd_unsubscribe(char **args, void *data, p_packet_t *packet)
void cmd_subscribe(char **args, void *data, p_packet_t *packet)
void cmd_users(char **args, void *data, p_packet_t *packet)
void cmd_create(char **args, void *data, p_packet_t *packet)
void cmd_messages(char **args, void *data, p_packet_t *packet)
void cmd_subscribed(char **args, void *data, p_packet_t *packet)
void cmd_help(char **args, void *data, p_packet_t *packet)
void cmd_list(char **args, void *data, p_packet_t *packet)
Definition: commands.h:19
bool need_login
Definition: commands.h:23
char * name
Definition: commands.h:20
char * description
Definition: commands.h:21
void(* func)(char **args, void *data, p_packet_t *packet)
Definition: commands.h:22
Represents a packet with type and data.
Definition: protocol.h:31