| |
1 /* pidgin |
| |
2 * |
| |
3 * Pidgin is the legal property of its developers, whose names are too numerous |
| |
4 * to list here. Please refer to the COPYRIGHT file distributed with this |
| |
5 * source distribution. |
| |
6 * |
| |
7 * This program is free software; you can redistribute it and/or modify |
| |
8 * it under the terms of the GNU General Public License as published by |
| |
9 * the Free Software Foundation; either version 2 of the License, or |
| |
10 * (at your option) any later version. |
| |
11 * |
| |
12 * This program is distributed in the hope that it will be useful, |
| |
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| |
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| |
15 * GNU General Public License for more details. |
| |
16 * |
| |
17 * You should have received a copy of the GNU General Public License |
| |
18 * along with this program; if not, write to the Free Software |
| |
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
| |
20 */ |
| |
21 |
| |
22 #ifndef PIDGIN_XMPP_DISCO_H |
| |
23 #define PIDGIN_XMPP_DISCO_H |
| |
24 |
| |
25 typedef struct _XmppDiscoService XmppDiscoService; |
| |
26 |
| |
27 #include "gtkdisco.h" |
| |
28 |
| |
29 #define XMPP_PLUGIN_ID "prpl-jabber" |
| |
30 #define NS_DISCO_INFO "http://jabber.org/protocol/disco#info" |
| |
31 #define NS_DISCO_ITEMS "http://jabber.org/protocol/disco#items" |
| |
32 #define NS_MUC "http://jabber.org/protocol/muc" |
| |
33 #define NS_REGISTER "jabber:iq:register" |
| |
34 |
| |
35 #include "plugin.h" |
| |
36 extern PurplePlugin *my_plugin; |
| |
37 |
| |
38 /** |
| |
39 * The types of services. |
| |
40 */ |
| |
41 typedef enum |
| |
42 { |
| |
43 XMPP_DISCO_SERVICE_TYPE_UNSET, |
| |
44 /** |
| |
45 * A registerable gateway to another protocol. An example would be |
| |
46 * XMPP legacy transports. |
| |
47 */ |
| |
48 XMPP_DISCO_SERVICE_TYPE_GATEWAY, |
| |
49 |
| |
50 /** |
| |
51 * A directory (e.g. allows the user to search for other users). |
| |
52 */ |
| |
53 XMPP_DISCO_SERVICE_TYPE_DIRECTORY, |
| |
54 |
| |
55 /** |
| |
56 * A chat (multi-user conversation). |
| |
57 */ |
| |
58 XMPP_DISCO_SERVICE_TYPE_CHAT, |
| |
59 |
| |
60 /** |
| |
61 * A pubsub collection (contains nodes) |
| |
62 */ |
| |
63 XMPP_DISCO_SERVICE_TYPE_PUBSUB_COLLECTION, |
| |
64 |
| |
65 /** |
| |
66 * A pubsub leaf (contains stuff, not nodes). |
| |
67 */ |
| |
68 XMPP_DISCO_SERVICE_TYPE_PUBSUB_LEAF, |
| |
69 |
| |
70 /** |
| |
71 * Something else. Do we need more categories? |
| |
72 */ |
| |
73 XMPP_DISCO_SERVICE_TYPE_OTHER |
| |
74 } XmppDiscoServiceType; |
| |
75 |
| |
76 /** |
| |
77 * The flags of services. |
| |
78 */ |
| |
79 typedef enum |
| |
80 { |
| |
81 XMPP_DISCO_NONE = 0x0000, |
| |
82 XMPP_DISCO_ADD = 0x0001, /**< Supports an 'add' operation */ |
| |
83 XMPP_DISCO_BROWSE = 0x0002, /**< Supports browsing */ |
| |
84 XMPP_DISCO_REGISTER = 0x0004 /**< Supports a 'register' operation */ |
| |
85 } XmppDiscoServiceFlags; |
| |
86 |
| |
87 struct _XmppDiscoService { |
| |
88 PidginDiscoList *list; |
| |
89 gchar *name; |
| |
90 gchar *description; |
| |
91 |
| |
92 gchar *gateway_type; |
| |
93 XmppDiscoServiceType type; |
| |
94 XmppDiscoServiceFlags flags; |
| |
95 |
| |
96 XmppDiscoService *parent; |
| |
97 gchar *jid; |
| |
98 gchar *node; |
| |
99 gboolean expanded; |
| |
100 }; |
| |
101 |
| |
102 void xmpp_disco_start(PidginDiscoList *list); |
| |
103 |
| |
104 void xmpp_disco_service_expand(XmppDiscoService *service); |
| |
105 void xmpp_disco_service_register(XmppDiscoService *service); |
| |
106 |
| |
107 #endif /* PIDGIN_XMPP_DISCO_H */ |