summaryrefslogtreecommitdiff
path: root/src/jlib.hrl
blob: 3c2dbc5b16507a499eb1715871cd95aa45919e81 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
%%%----------------------------------------------------------------------
%%% File    : jlib.hrl
%%% Author  : Alexey Shchepin <alexey@sevcom.net>
%%% Purpose : 
%%% Created :  5 Mar 2003 by Alexey Shchepin <alexey@sevcom.net>
%%%----------------------------------------------------------------------

-define(NS_DISCO_ITEMS, "http://jabber.org/protocol/disco#items").
-define(NS_DISCO_INFO,  "http://jabber.org/protocol/disco#info").
-define(NS_VCARD,       "vcard-temp").
-define(NS_AUTH,        "jabber:iq:auth").
-define(NS_AUTH_ERROR,  "jabber:iq:auth:error").
-define(NS_REGISTER,    "jabber:iq:register").
-define(NS_SEARCH,      "jabber:iq:search").
-define(NS_ROSTER,      "jabber:iq:roster").
-define(NS_PRIVATE,     "jabber:iq:private").
-define(NS_VERSION,     "jabber:iq:version").
-define(NS_TIME,        "jabber:iq:time").
-define(NS_XDATA,       "jabber:x:data").
-define(NS_IQDATA,      "jabber:iq:data").
-define(NS_DELAY,       "jabber:x:delay").
-define(NS_EVENT,       "jabber:x:event").
-define(NS_XCONFERENCE, "jabber:x:conference").
-define(NS_STATS,       "http://jabber.org/protocol/stats").
-define(NS_MUC,         "http://jabber.org/protocol/muc").
-define(NS_MUC_USER,    "http://jabber.org/protocol/muc#user").
-define(NS_MUC_ADMIN,   "http://jabber.org/protocol/muc#admin").
-define(NS_MUC_OWNER,   "http://jabber.org/protocol/muc#owner").

-define(NS_STREAM,      "http://etherx.jabber.org/streams").

-define(NS_STANZAS,     "urn:ietf:params:xml:ns:xmpp-stanzas").
-define(NS_STREAMS,     "urn:ietf:params:xml:ns:xmpp-streams").

-define(NS_SASL, "urn:ietf:params:xml:ns:xmpp-sasl").
-define(NS_SESSION, "urn:ietf:params:xml:ns:xmpp-session").

% TODO: remove "code" attribute (currently it used for backward-compatibility)
-define(STANZA_ERROR(Code, Class, Condition),
	{xmlelement, "error",
	 [{"code", Code}, {"class", Class}],
	 [{xmlelement, "stanza-condition",
	   [{"xmlns", ?NS_STANZAS}],
	   [{xmlelement, Condition, [], []}]}]}).

-define(ERR_BAD_REQUEST,
	?STANZA_ERROR("400", "format",    "bad-request")).
-define(ERR_FEATURE_NOT_IMPLEMENTED,
	?STANZA_ERROR("501", "recipient", "feature-not-implemented")).
-define(ERR_FORBIDDEN,
	?STANZA_ERROR("403", "format",    "forbidden")).
-define(ERR_INTERNAL_SERVER_ERROR,
	?STANZA_ERROR("403", "server",    "internal-server-error")).
-define(ERR_JID_MALFORMED,
	?STANZA_ERROR("400", "address",   "jid-malformed")).
-define(ERR_JID_NOT_FOUND,
	?STANZA_ERROR("404", "address",   "jid-not-found")).
-define(ERR_NOT_ALLOWED,
	?STANZA_ERROR("405", "access",    "not-allowed")).
-define(ERR_RECIPIENT_UNAVAILABLE,
	?STANZA_ERROR("503", "recipient", "recipient-unavailable")).
-define(ERR_REGISTRATION_REQUIRED,
	?STANZA_ERROR("407", "access",    "registration-required")).
-define(ERR_REMOTE_SERVER_NOT_FOUND,
	?STANZA_ERROR("502", "address",   "remote-server-not-found")).
-define(ERR_REMOTE_SERVER_TIMEOUT,
	?STANZA_ERROR("504", "server",    "remote-server-timeout")).
-define(ERR_SERVICE_UNAVAILABLE,
	?STANZA_ERROR("503", "server",    "service-unavailable")).
%-define(ERR_,
%	?STANZA_ERROR("", "", "")).

% Application-specific stanza errors
-define(AUTH_STANZA_ERROR(Condition),
	{xmlelement, "error",
	 [{"code", "406"}, {"class", "app"}],
	 [{xmlelement, "auth-condition",
	   [{"xmlns", ?NS_AUTH_ERROR}],
	   [{xmlelement, Condition, [], []}]}]}).

-define(ERR_AUTH_NO_RESOURCE_PROVIDED,
	?AUTH_STANZA_ERROR("no-resource-provided")).
-define(ERR_AUTH_BAD_RESOURCE_FORMAT,
	?AUTH_STANZA_ERROR("bad-resource-format")).
-define(ERR_AUTH_RESOURCE_CONFLICT,
	?AUTH_STANZA_ERROR("resource-conflict")).


-define(STREAM_ERROR(Class, Condition),
	{xmlelement, "stream:error",
	 [{"class", Class}],
	 [{xmlelement, "stream-condition",
	   [{"xmlns", ?NS_STANZAS}],
	   [{xmlelement, Condition, [], []}]}]}).

-define(SERR_HOST_GONE,
	?STREAM_ERROR("address",  "host-gone")).
-define(SERR_HOST_UNKNOWN,
	?STREAM_ERROR("address",  "host-unknown")).
-define(SERR_INTERNAL_SERVER_ERROR,
	?STREAM_ERROR("server",   "internal-server-error")).
-define(SERR_INVALID_NAMESPACE,
	?STREAM_ERROR("format",   "invalid-namespace")).
-define(SERR_RESOURSE_CONSTRAINT,
	?STREAM_ERROR("server",   "resource-constraint")).
% TODO: include hostname or IP
-define(SERR_SEE_OTHER_HOST,
	?STREAM_ERROR("redirect", "see-other-host")).
-define(SERR_SYSTEM_SHUTDOWN,
	?STREAM_ERROR("server",   "system-shutdown")).
-define(SERR_UNSUPPORTED_STANZA_TYPE,
	?STREAM_ERROR("format",   "unsupported-stanza-type")).
-define(SERR_UNSUPPORTED_VERSION,
	?STREAM_ERROR("format",   "unsupported-version")).
-define(SERR_XML_NOT_WELL_FORMED,
	?STREAM_ERROR("format",   "xml-not-well-formed")).
%-define(SERR_,
%	?STREAM_ERROR("", "")).