Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
XmppErrors.cs
1using System.Text;
2using System.Threading.Tasks;
4
6{
10 public static class XmppErrors
11 {
24 public static async Task<string> IqError(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorType, string ErrorXml, string ErrorText, string Language)
25 {
26 StringBuilder sb = new StringBuilder();
27
28 sb.Append("<error type='");
29 sb.Append(ErrorType);
30 sb.Append("'>");
31 sb.Append(ErrorXml);
32
33 if (!string.IsNullOrEmpty(ErrorText))
34 {
35 sb.Append("<text xmlns='");
36 sb.Append(XmppServer.StanzaNamespace);
37
38 if (!string.IsNullOrEmpty(Language))
39 {
40 sb.Append("' xml:lang='");
41 sb.Append(XML.Encode(Language));
42 }
43
44 sb.Append("'>");
45 sb.Append(XML.Encode(ErrorText));
46 sb.Append("</text>");
47 }
48
49 sb.Append("</error>");
50
51 string Xml = sb.ToString();
52
53 if (await Sender.IqError(Id, To, From, Xml))
54 return Xml;
55 else
56 return null;
57 }
58
69 public static Task<string> IqErrorBadRequest(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
70 {
71 return IqError(Sender, Id, To, From, "modify", "<bad-request xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
72 }
73
84 public static Task<string> IqErrorResourceConstraint(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
85 {
86 return IqError(Sender, Id, To, From, "wait", "<resource-constraint xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
87 }
88
99 public static Task<string> IqErrorNotAllowed(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
100 {
101 return IqError(Sender, Id, To, From, "cancel", "<not-allowed xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
102 }
103
114 public static Task<string> IqErrorItemNotFound(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
115 {
116 return IqError(Sender, Id, To, From, "cancel", "<item-not-found xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
117 }
118
129 public static Task<string> IqErrorServiceUnavailable(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
130 {
131 return IqError(Sender, Id, To, From, "cancel", "<service-unavailable xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
132 }
133
144 public static Task<string> IqErrorForbidden(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
145 {
146 return IqError(Sender, Id, To, From, "auth", "<forbidden xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
147 }
148
159 public static Task<string> IqErrorNotAcceptable(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
160 {
161 return IqError(Sender, Id, To, From, "modify", "<not-acceptable xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
162 }
163
174 public static Task<string> IqErrorConflict(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
175 {
176 return IqError(Sender, Id, To, From, "cancel", "<conflict xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
177 }
178
189 public static Task<string> IqErrorJidMalformed(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
190 {
191 return IqError(Sender, Id, To, From, "modify", "<jid-malformed xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
192 }
193
204 public static Task<string> IqErrorNotAuthorized(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
205 {
206 return IqError(Sender, Id, To, From, "auth", "<not-authorized xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
207 }
208
221 public static Task<bool> PresenceError(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorType, string ErrorXml, string ErrorText, string Language)
222 {
223 StringBuilder Xml = new StringBuilder();
224
225 Xml.Append("<error type='");
226 Xml.Append(ErrorType + "'>");
227 Xml.Append(ErrorXml);
228
229 if (!string.IsNullOrEmpty(ErrorText))
230 {
231 Xml.Append("<text xmlns='");
232 Xml.Append(XmppServer.StanzaNamespace);
233
234 if (!string.IsNullOrEmpty(Language))
235 {
236 Xml.Append("' xml:lang='");
237 Xml.Append(XML.Encode(Language));
238 }
239
240 Xml.Append("'>");
241 Xml.Append(XML.Encode(ErrorText));
242 Xml.Append("</text>");
243 }
244
245 Xml.Append("</error>");
246
247 return Sender.PresenceError(Id, To, From, Xml.ToString());
248 }
249
260 public static Task<bool> PresenceErrorBadRequest(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
261 {
262 return PresenceError(Sender, Id, To, From, "modify", "<bad-request xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
263 }
264
275 public static Task<bool> PresenceErrorResourceConstraint(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
276 {
277 return PresenceError(Sender, Id, To, From, "wait", "<resource-constraint xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
278 }
279
290 public static Task<bool> PresenceErrorNotAllowed(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
291 {
292 return PresenceError(Sender, Id, To, From, "cancel", "<not-allowed xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
293 }
294
305 public static Task<bool> PresenceErrorItemNotFound(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
306 {
307 return PresenceError(Sender, Id, To, From, "cancel", "<item-not-found xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
308 }
309
320 public static Task<bool> PresenceErrorServiceUnavailable(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
321 {
322 return PresenceError(Sender, Id, To, From, "cancel", "<service-unavailable xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
323 }
324
335 public static Task<bool> PresenceErrorForbidden(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
336 {
337 return PresenceError(Sender, Id, To, From, "auth", "<forbidden xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
338 }
339
350 public static Task<bool> PresenceErrorNotAuthorized(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
351 {
352 return PresenceError(Sender, Id, To, From, "auth", "<not-authorized xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
353 }
354
365 public static Task<bool> PresenceErrorNotAcceptable(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
366 {
367 return PresenceError(Sender, Id, To, From, "modify", "<not-acceptable xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
368 }
369
380 public static Task<bool> PresenceErrorJidMalformed(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
381 {
382 return PresenceError(Sender, Id, To, From, "modify", "<jid-malformed xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
383 }
384
395 public static Task<bool> PresenceErrorConflict(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
396 {
397 return PresenceError(Sender, Id, To, From, "cancel", "<conflict xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
398 }
399
410 public static Task<bool> PresenceErrorRegistrationRequired(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
411 {
412 return PresenceError(Sender, Id, To, From, "auth", "<registration-required xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
413 }
414
427 public static Task<bool> MessageError(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorType, string ErrorXml, string ErrorText, string Language)
428 {
429 StringBuilder Xml = new StringBuilder();
430
431 Xml.Append("<error type='");
432 Xml.Append(ErrorType);
433 Xml.Append("'>");
434 Xml.Append(ErrorXml);
435
436 if (!string.IsNullOrEmpty(ErrorText))
437 {
438 Xml.Append("<text xmlns='");
439 Xml.Append(XmppServer.StanzaNamespace);
440
441 if (!string.IsNullOrEmpty(Language))
442 {
443 Xml.Append("' xml:lang='");
444 Xml.Append(XML.Encode(Language));
445 }
446
447 Xml.Append("'>");
448 Xml.Append(XML.Encode(ErrorText));
449 Xml.Append("</text>");
450 }
451
452 Xml.Append("</error>");
453
454 return Sender.Message("error", Id, To, From, string.Empty, Xml.ToString());
455 }
456
466 public static Task<bool> MessageErrorBadRequest(this ISender Sender, XmppAddress To, XmppAddress From, string ErrorText, string Language)
467 {
468 return MessageError(Sender, string.Empty, To, From, "modify", "<bad-request xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
469 }
470
480 public static Task<bool> MessageErrorConflict(this ISender Sender, XmppAddress To, XmppAddress From, string ErrorText, string Language)
481 {
482 return MessageError(Sender, string.Empty, To, From, "cancel", "<conflict xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
483 }
484
494 public static Task<bool> MessageErrorForbidden(this ISender Sender, XmppAddress To, XmppAddress From, string ErrorText, string Language)
495 {
496 return MessageError(Sender, string.Empty, To, From, "auth", "<forbidden xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
497 }
498
508 public static Task<bool> MessageErrorItemNotFound(this ISender Sender, XmppAddress To, XmppAddress From, string ErrorText, string Language)
509 {
510 return MessageError(Sender, string.Empty, To, From, "cancel", "<item-not-found xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
511 }
512
522 public static Task<bool> MessageErrorJidMalformed(this ISender Sender, XmppAddress To, XmppAddress From, string ErrorText, string Language)
523 {
524 return MessageError(Sender, string.Empty, To, From, "modify", "<jid-malformed xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
525 }
526
536 public static Task<bool> MessageErrorNotAcceptable(this ISender Sender, XmppAddress To, XmppAddress From, string ErrorText, string Language)
537 {
538 return MessageError(Sender, string.Empty, To, From, "modify", "<not-acceptable xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
539 }
540
550 public static Task<bool> MessageErrorServiceUnavailable(this ISender Sender, XmppAddress To, XmppAddress From, string ErrorText, string Language)
551 {
552 return MessageError(Sender, string.Empty, To, From, "cancel", "<service-unavailable xmlns='" + XmppServer.StanzaNamespace + "'/>", ErrorText, Language);
553 }
554
555 }
556}
Helps with common XML-related tasks.
Definition: XML.cs:19
static string Encode(string s)
Encodes a string for use in XML.
Definition: XML.cs:27
Contains information about one XMPP address.
Definition: XmppAddress.cs:9
override string ToString()
object.ToString()
Definition: XmppAddress.cs:190
Extensions methods for returning XMPP Errors
Definition: XmppErrors.cs:11
static Task< bool > PresenceErrorConflict(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns a presence conflict error stanza.
Definition: XmppErrors.cs:395
static Task< string > IqErrorForbidden(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns an iq forbidden error stanza.
Definition: XmppErrors.cs:144
static Task< bool > PresenceErrorServiceUnavailable(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns a presence service-unavailable error stanza.
Definition: XmppErrors.cs:320
static Task< bool > PresenceErrorNotAcceptable(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns a presence not-acceptable error stanza.
Definition: XmppErrors.cs:365
static Task< bool > PresenceErrorNotAllowed(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns a presence not-allowed error stanza.
Definition: XmppErrors.cs:290
static Task< bool > PresenceErrorForbidden(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns a presence forbidden error stanza.
Definition: XmppErrors.cs:335
static async Task< string > IqError(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorType, string ErrorXml, string ErrorText, string Language)
Sends an IQ Error stanza.
Definition: XmppErrors.cs:24
static Task< string > IqErrorResourceConstraint(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns an iq resource-constraint error stanza.
Definition: XmppErrors.cs:84
static Task< string > IqErrorNotAuthorized(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns an iq not-authorized error stanza.
Definition: XmppErrors.cs:204
static Task< string > IqErrorJidMalformed(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns an iq jid-malformed error stanza.
Definition: XmppErrors.cs:189
static Task< bool > MessageErrorNotAcceptable(this ISender Sender, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns a message not-acceptable error stanza.
Definition: XmppErrors.cs:536
static Task< bool > PresenceErrorRegistrationRequired(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns a presence registration-required error stanza.
Definition: XmppErrors.cs:410
static Task< bool > MessageErrorForbidden(this ISender Sender, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns a message forbidden error stanza.
Definition: XmppErrors.cs:494
static Task< bool > MessageErrorItemNotFound(this ISender Sender, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns a message item-not-found error stanza.
Definition: XmppErrors.cs:508
static Task< string > IqErrorItemNotFound(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns an iq item-not-found error stanza.
Definition: XmppErrors.cs:114
static Task< bool > PresenceError(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorType, string ErrorXml, string ErrorText, string Language)
Sends an Presence Error stanza.
Definition: XmppErrors.cs:221
static Task< bool > MessageErrorJidMalformed(this ISender Sender, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns a message jid-malformed error stanza.
Definition: XmppErrors.cs:522
static Task< bool > PresenceErrorNotAuthorized(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns a presence not-authorized error stanza.
Definition: XmppErrors.cs:350
static Task< bool > MessageError(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorType, string ErrorXml, string ErrorText, string Language)
Sends an Message Error stanza.
Definition: XmppErrors.cs:427
static Task< bool > MessageErrorServiceUnavailable(this ISender Sender, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns a message service-unavailable error stanza.
Definition: XmppErrors.cs:550
static Task< bool > MessageErrorBadRequest(this ISender Sender, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns a message bad-request error stanza.
Definition: XmppErrors.cs:466
static Task< bool > PresenceErrorBadRequest(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns a presence bad-request error stanza.
Definition: XmppErrors.cs:260
static Task< bool > PresenceErrorItemNotFound(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns a presence item-not-found error stanza.
Definition: XmppErrors.cs:305
static Task< string > IqErrorConflict(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns an iq conflict error stanza.
Definition: XmppErrors.cs:174
static Task< string > IqErrorNotAllowed(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns an iq not-allowed error stanza.
Definition: XmppErrors.cs:99
static Task< bool > PresenceErrorResourceConstraint(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns a presence resource-constraint error stanza.
Definition: XmppErrors.cs:275
static Task< bool > MessageErrorConflict(this ISender Sender, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns a message conflict error stanza.
Definition: XmppErrors.cs:480
static Task< string > IqErrorServiceUnavailable(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns an iq service-unavailable error stanza.
Definition: XmppErrors.cs:129
static Task< bool > PresenceErrorJidMalformed(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns a presence jid-malformed error stanza.
Definition: XmppErrors.cs:380
static Task< string > IqErrorNotAcceptable(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns an iq not-acceptable error stanza.
Definition: XmppErrors.cs:159
static Task< string > IqErrorBadRequest(this ISender Sender, string Id, XmppAddress To, XmppAddress From, string ErrorText, string Language)
Returns an iq bad-request error stanza.
Definition: XmppErrors.cs:69
const string StanzaNamespace
urn:ietf:params:xml:ns:xmpp-stanzas (RFC 6120)
Definition: XmppServer.cs:98
Interface for senders of stanzas.
Definition: ISender.cs:10
Task< bool > Message(string Type, string Id, XmppAddress To, XmppAddress From, string Language, string ContentXml)
Message stanza.
Task< string > IqError(string Id, XmppAddress To, XmppAddress From, Exception ex)
Sends an IQ Error stanza.
Task< bool > PresenceError(string Id, XmppAddress To, XmppAddress From, Exception ex)
Sends an Presence Error stanza.