mirror of
https://forge.fsky.io/lda/Parsee.git
synced 2026-03-13 13:45:10 +00:00
102 lines
4.1 KiB
C
102 lines
4.1 KiB
C
#ifndef PARSEE_ROUTES_H
|
|
#define PARSEE_ROUTES_H
|
|
|
|
/*-*
|
|
* The HTTP routes and Matrix bot endpoints for Parser
|
|
* -----------
|
|
* Written-By: LDA */
|
|
|
|
#include <Parsee.h>
|
|
typedef struct ParseeHttpArg {
|
|
ParseeData *data;
|
|
HttpServerContext *ctx;
|
|
Stream *stream;
|
|
} ParseeHttpArg;
|
|
|
|
typedef struct ParseeCmdArg {
|
|
ParseeData *data;
|
|
HashMap *event;
|
|
} ParseeCmdArg;
|
|
|
|
/* A list of all commands. */
|
|
#define COMMANDS X_COMMAND( \
|
|
"ban-user", CmdBanUser, \
|
|
"Bans a user from a room or a MUC" \
|
|
) \
|
|
X_COMMAND( \
|
|
"ban-list", CmdNoFlyList, \
|
|
"Globally bans a user from using Parsee" \
|
|
) \
|
|
X_COMMAND( \
|
|
"nuke-muc", CmdUnlinkMUC, \
|
|
"Removes a MUC. Users should then run " \
|
|
"!ban-list to remove all access to the MUC" \
|
|
) \
|
|
X_COMMAND( \
|
|
"list-bans", CmdListBans, \
|
|
"Shows all global bans from Parsee" \
|
|
) \
|
|
X_COMMAND( \
|
|
"set-pl", CmdSetPL, \
|
|
"Sets the power level in a Parsee room" \
|
|
) \
|
|
X_COMMAND( \
|
|
"set-min-pl", CmdSetMin, \
|
|
"Sets the power level to send a specific event " \
|
|
"in a Parsee room" \
|
|
) \
|
|
X_COMMAND( \
|
|
"plumb-muc", CmdPlumb, \
|
|
"Plumbs an existing Matrix room to a MUC. " \
|
|
"You'll need to give the Parsee bot enough " \
|
|
"privileges, however. " \
|
|
) \
|
|
X_COMMAND( \
|
|
"help", CmdHelp, \
|
|
"Shows the command list" \
|
|
) \
|
|
X_COMMAND( \
|
|
"adminify", CmdAdmin, \
|
|
"Adminifies a Matrix glob pattern." \
|
|
) \
|
|
X_COMMAND( \
|
|
"stats", CmdStats, \
|
|
"Shows some Parsee statistics." \
|
|
)
|
|
|
|
#define X_COMMAND(path, name,d) extern void name(Command *, void *);
|
|
COMMANDS
|
|
#undef X_COMMAND
|
|
#define CommandHead(name, cmd, argp) void \
|
|
name(Command * cmd, void *argp)
|
|
/* A list of all routes. */
|
|
#define ROUTES X_ROUTE("/", RouteRoot) \
|
|
X_ROUTE("/_matrix/app/v1/transactions/(.*)", RouteTxns) \
|
|
X_ROUTE("/_matrix/app/v1/users/(.*)", RouteUserAck) \
|
|
X_ROUTE("/_matrix/app/v1/rooms/(.*)", RouteRoomAck) \
|
|
X_ROUTE("/_matrix/app/v1/ping", RoutePing) \
|
|
X_ROUTE("/_matrix/client/v1/media/download/(.*)/(.*)", RouteMedia)
|
|
|
|
#define X_ROUTE(path, name) extern void * name(Array *, void *);
|
|
ROUTES
|
|
#undef X_ROUTE
|
|
|
|
#define RouteHead(name, pathargs, argp) void * \
|
|
name(Array * pathargs, void *argp)
|
|
#define RequestJSON() do \
|
|
{ \
|
|
Stream *s = args->stream;\
|
|
if (!(request = JsonDecode(s))) \
|
|
{ \
|
|
HttpResponseStatus( \
|
|
args->ctx, \
|
|
HTTP_BAD_REQUEST \
|
|
); \
|
|
response = MatrixCreateError(\
|
|
"M_NO_JSON", \
|
|
"Invalid JSON stream." \
|
|
); \
|
|
} \
|
|
} \
|
|
while (0)
|
|
#endif
|