mirror of
https://forge.fsky.io/lda/Parsee.git
synced 2026-03-14 00:35:11 +00:00
[MOD/WIP] Externalise and add errors to commands
Still need forms...
This commit is contained in:
parent
408888ef67
commit
a880769c48
9 changed files with 311 additions and 89 deletions
|
|
@ -10,15 +10,16 @@
|
|||
typedef struct XMPPCommandManager XMPPCommandManager;
|
||||
typedef struct XMPPCommand XMPPCommand;
|
||||
typedef struct XMPPOption XMPPOption;
|
||||
typedef void (*XMPPCmdCallback)(XMPPCommandManager *, HashMap *, XMLElement *);
|
||||
typedef void (*XMPPCmdCallback)(XMPPCommandManager *, char *, HashMap *, XMLElement *);
|
||||
|
||||
/** Creates a simple XMPP command manager, which routes commands
|
||||
* with a single-stage form system.
|
||||
* with a single-stage form system, with a {cookie}
|
||||
* -------------------------------------------
|
||||
* Returns: An opaque command manager[LA:HEAP]
|
||||
* Modifies: NOTHING
|
||||
* See-Also: XMPPFreeManager */
|
||||
extern XMPPCommandManager * XMPPCreateManager(void);
|
||||
extern XMPPCommandManager * XMPPCreateManager(void *cookie);
|
||||
extern void * XMPPGetManagerCookie(XMPPCommandManager *manager);
|
||||
|
||||
/** Create a basic command with a node and name description
|
||||
* -----------------------------------------------------
|
||||
|
|
@ -31,7 +32,7 @@ extern XMLElement * XMPPFormifyCommand(XMPPCommand *cmd);
|
|||
extern char * XMPPGetCommandNode(XMPPCommand *cmd);
|
||||
extern char * XMPPGetCommandDesc(XMPPCommand *cmd);
|
||||
extern bool XMPPCommandRequiresForm(XMPPCommand *cmd);
|
||||
extern void XMPPExecuteCommand(XMPPCommandManager *m, XMPPCommand *cmd, XMLElement *to, HashMap *arg_table);
|
||||
extern void XMPPExecuteCommand(XMPPCommandManager *m, XMPPCommand *cmd, char *from, XMLElement *to, HashMap *arg_table);
|
||||
|
||||
/** Create a basic option.
|
||||
* -----------------------------------------------------
|
||||
|
|
@ -80,4 +81,15 @@ extern void XMPPFreeManager(XMPPCommandManager *manager);
|
|||
* Modifies: {manager}
|
||||
* See-Also: XMPPCreateManager */
|
||||
extern bool XMPPManageCommand(XMPPCommandManager *m, XMLElement *stanza, ParseeData *data);
|
||||
|
||||
|
||||
/* --------------------------------- COMMANDS --------------------------------- */
|
||||
#define XMPPCOMMANDS \
|
||||
XMPP_COMMAND(StatusCallback, "stats", "Get Parsee statistics", {}) \
|
||||
XMPP_COMMAND(AdminsCallback, "admin", "Get Parsee admin list", {}) \
|
||||
XMPP_COMMAND(NoflyCallback, "nofly", "Get Parsee nofly list", {})
|
||||
|
||||
#define XMPP_COMMAND(f,n,t,s) extern void f(XMPPCommandManager *, char *, HashMap *, XMLElement *);
|
||||
XMPPCOMMANDS
|
||||
#undef XMPP_COMMAND
|
||||
#endif
|
||||
|
|
|
|||
38
src/include/XMPPFormTool.h
Normal file
38
src/include/XMPPFormTool.h
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
#ifndef PARSEE_FORM_H
|
||||
#define PARSEE_FORM_H
|
||||
|
||||
#define Report(id, label) do \
|
||||
{ \
|
||||
field = XMLCreateTag("field"); \
|
||||
XMLAddAttr(field, "var", id); \
|
||||
XMLAddAttr(field, "label", label); \
|
||||
XMLAddChild(reported, field); \
|
||||
} \
|
||||
while(0)
|
||||
#define BeginItem() item = XMLCreateTag("item")
|
||||
#define EndItem() XMLAddChild(x, item)
|
||||
#define SetField(id, val) do \
|
||||
{ \
|
||||
field = XMLCreateTag("field"); \
|
||||
value = XMLCreateTag("value"); \
|
||||
txt = XMLCreateText(val); \
|
||||
XMLAddAttr(field, "var", id); \
|
||||
XMLAddChild(value, txt); \
|
||||
XMLAddChild(field, value); \
|
||||
XMLAddChild(item, field); \
|
||||
} \
|
||||
while(0)
|
||||
#define SetFixed(id, val) do \
|
||||
{ \
|
||||
field = XMLCreateTag("field"); \
|
||||
value = XMLCreateTag("value"); \
|
||||
txt = XMLCreateText(val); \
|
||||
XMLAddAttr(field, "var", id); \
|
||||
XMLAddAttr(field, "type", "fixed"); \
|
||||
XMLAddChild(value, txt); \
|
||||
XMLAddChild(field, value); \
|
||||
XMLAddChild(item, field); \
|
||||
} \
|
||||
while(0)
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue