3using System.Threading.Tasks;
34 public override string Type =>
"XMPP";
36 private static string GetForwardedContent(
string Content,
XmppAddress From)
38 StringBuilder sb =
new StringBuilder();
40 if (!
string.IsNullOrEmpty(Content))
43 sb.Append(
"<addresses xmlns='http://jabber.org/protocol/address'>");
44 sb.Append(
"<address type='ofrom' jid='");
46 sb.Append(
"'/></addresses>");
53 return Type.ToLower()
switch
92 string ForwardedContent = GetForwardedContent(ContentXml, From);
94 await this.client.SendIq(
string.Empty, To.
Address, ForwardedContent,
Type, async (sender, e) =>
96 string Content = e.Response?.InnerXml.ToString() ??
string.Empty;
101 await Sender.
IqError(
Id, From, To, Content);
137 string ForwardedContent = GetForwardedContent(ContentXml, From);
139 await this.client.SendMessage(
QoSLevel.Unacknowledged, GetMessageType(
Type),
Id,
158 string ForwardedContent = GetForwardedContent(
Stanza.
Content, From);
160 return this.
Presence(Type,
Id, To, From, Language, ForwardedContent, Sender);
176 string ForwardedContent = GetForwardedContent(ContentXml, From);
178 await this.client.SendDirectedPresence(
Type, To.
Address, ForwardedContent);
192 string ForwardedContent = GetForwardedContent(ErrorXml, From);
194 await this.client.SendIqError(
Id, To.
Address, ForwardedContent);
208 string ForwardedContent = GetForwardedContent(this.client.ExceptionToXmppXml(ex), From);
210 await this.client.SendIqError(
Id, To.
Address, ForwardedContent);
224 string ForwardedContent = GetForwardedContent(ResultXml, From);
226 await this.client.SendIqResult(
Id, To.
Address, ForwardedContent);
242 string ForwardedContent = GetForwardedContent(ContentXml, From);
244 await this.client.SendDirectedPresence(
Type, To.
Address, ForwardedContent);
258 string ForwardedContent = GetForwardedContent(ErrorXml, From);
260 await this.client.SendDirectedPresence(
"error", To.
Address, ForwardedContent);
274 string ForwardedContent = GetForwardedContent(this.client.ExceptionToXmppXml(ex), From);
276 await this.client.SendDirectedPresence(
"error", To.
Address, ForwardedContent);
292 string ForwardedContent = GetForwardedContent(ContentXml, From);
294 await this.client.SendMessage(
QoSLevel.Unacknowledged, GetMessageType(
Type),
Id,
311 string ForwardedContent = GetForwardedContent(this.client.ExceptionToXmppXml(ex), From);
Helps with common XML-related tasks.
static string Encode(string s)
Encodes a string for use in XML.
Abstract base class for server connections.
CaseInsensitiveString LocalDomain
Local domain name.
CaseInsensitiveString RemoteDomain
Connection to domain.
Contains information about a stanza.
string Content
Literal XML content.
Contains information about one XMPP address.
CaseInsensitiveString Address
XMPP Address
Manages an XMPP server-to-server connection tunneled over an XMPP client connection to a parent broke...
override string Type
Type of endpoint
override async Task< string > IqError(string Id, XmppAddress To, XmppAddress From, Exception ex)
Sends an IQ error stanza.
override async Task< bool > Presence(string Type, string Id, XmppAddress To, XmppAddress From, string Language, string ContentXml, ISender Sender)
Sends a presence stanza.
override async Task< bool > Message(string Type, string Id, XmppAddress To, XmppAddress From, string Language, string ContentXml)
Sends a message stanza.
override async Task< bool > IQ(string Type, string Id, XmppAddress To, XmppAddress From, string Language, string ContentXml, ISender Sender)
Sends an IQ stanza.
override async Task< bool > IqResult(string Id, XmppAddress To, XmppAddress From, string ResultXml)
Sends an IQ result stanza.
override async Task< bool > Presence(string Type, string Id, XmppAddress To, XmppAddress From, string Language, string ContentXml)
Sends a presence stanza.
override async Task< bool > Message(string Type, string Id, XmppAddress To, XmppAddress From, string Language, string ContentXml, ISender Sender)
Sends a message stanza.
override async Task< bool > MessageError(string Id, XmppAddress To, XmppAddress From, Exception ex)
Sends a message error stanza.
override async Task< bool > IqError(string Id, XmppAddress To, XmppAddress From, string ErrorXml)
Sends an IQ error stanza.
XmppS2SOverParentEndpoint(XmppClient Client, CaseInsensitiveString LocalDomain, CaseInsensitiveString RemoteDomain)
Manages an XMPP server-to-server connection tunneled over an XMPP client connection to a parent broke...
override Task< bool > IQ(string Type, string Id, XmppAddress To, XmppAddress From, string Language, Stanza Stanza, ISender Sender)
Sends an IQ stanza.
override Task< bool > Presence(string Type, string Id, XmppAddress To, XmppAddress From, string Language, Stanza Stanza, ISender Sender)
Sends a presence stanza.
override Task< bool > Message(string Type, string Id, XmppAddress To, XmppAddress From, string Language, Stanza Stanza, ISender Sender)
Sends a message stanza.
override async Task< bool > PresenceError(string Id, XmppAddress To, XmppAddress From, string ErrorXml)
Sends a presence error stanza.
override async Task< bool > PresenceError(string Id, XmppAddress To, XmppAddress From, Exception ex)
Sends a presence error stanza.
Manages an XMPP client connection. Implements XMPP, as defined in https://tools.ietf....
Represents a case-insensitive string.
static readonly CaseInsensitiveString Empty
Empty case-insensitive string
Interface for senders of stanzas.
Task< string > IqError(string Id, XmppAddress To, XmppAddress From, Exception ex)
Sends an IQ Error stanza.
Task< bool > IqResult(string Id, XmppAddress To, XmppAddress From, string ResultXml)
Sends an IQ Result stanza.
QoSLevel
Quality of Service Level for asynchronous messages. Support for QoS Levels must be supported by the r...
MessageType
Type of message received.