Documentation
¶
Index ¶
- Constants
- type Any
- type BindBind
- type BobData
- type BooleanFormField
- type ClientCaps
- type ClientError
- type ClientIQ
- type ClientMessage
- type ClientPresence
- type Config
- type Cookie
- type Delay
- type DiscoveryFeature
- type DiscoveryIdentity
- type DiscoveryReply
- type EmptyReply
- type ErrorBadRequest
- type ErrorReply
- type Extension
- type Extensions
- type FailureTLS
- type FixedFormField
- type Form
- type FormCallback
- type FormField
- type FormFieldMediaX
- type FormFieldOptionX
- type FormFieldRequiredX
- type FormFieldX
- type InBandRegistration
- type Media
- type MediaURIX
- type MultiSelectionFormField
- type MultiTextFormField
- type PingRequest
- type ProceedTLS
- type RegisterQuery
- type Roster
- type RosterEntry
- type RosterRequest
- type RosterRequestItem
- type SASLErrorCondition
- type SaslAbort
- type SaslFailure
- type SaslMechanisms
- type SaslSuccess
- type SelectionFormField
- type Stanza
- type StanzaError
- type StartTLS
- type StreamClose
- type StreamError
- type StreamErrorCondition
- type StreamFeatures
- type TextFormField
- type VCard
- type VersionQuery
- type VersionReply
Constants ¶
const ( BadFormat StreamErrorCondition = "bad-format" BadNamespacePrefix = "bad-namespace-prefix" Conflict = "conflict" ConnectionTimeout = "connection-timeout" HostGone = "host-gone" HostUnknown = "host-unknown" ImproperAddressing = "improper-addressing" InternalServerError = "internal-server-error" InvalidFrom = "invalid-from" InvalidNamespace = "invalid-namespace" InvalidXML = "invalid-xml" NotAuthorized = "not-authorized" NotWellFormed = "not-well-formed" PolicyViolation = "policy-violation" RemoteConnectionFailed = "remote-connection-failed" Reset = "reset" ResourceConstraint = "resource-constraint" RestrictedXML = "restricted-xml" SeeOtherHost = "see-other-host" SystemShutdown = "system-shutdown" UndefinedCondition = "undefined-condition" UnsupportedEncoding = "unsupported-encoding" UnsupportedFeature = "unsupported-feature" UnsupportedStanzaType = "unsupported-stanza-type" UnsupportedVersion = "unsupported-version" )
Stream error conditions as defined in RFC 6120, section 4.9.3
const ( SASLAborted SASLErrorCondition = "aborted" SASLAccountDisabled = "account-disabled" SASLCredentialsExpired = "credentials-expired" SASLEncryptionRequired = "encryption-required" SASLIncorrectEncoding = "incorrect-encoding" SASLInvalidAuthzid = "invalid-authzid" SASLInvalidMechanism = "invalid-mechanism" SASLMalformedRequest = "malformed-request" SASLMechanismTooWeak = "mechanism-too-weak" SASLNotAuthorized = "not-authorized" SASLTemporaryAuthFailure = "temporary-auth-failure" )
SASL error conditions as defined in RFC 6120, section 6.5
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BindBind ¶
type BindBind struct {
XMLName xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-bind bind"`
Resource string `xml:"resource"`
Jid string `xml:"jid"`
}
BindBind represents a bind RFC 6120, section 7
type BobData ¶
type BobData struct {
XMLName xml.Name `xml:"urn:xmpp:bob data"`
CID string `xml:"cid,attr"`
MIMEType string `xml:"type,attr"`
Base64 string `xml:",chardata"`
}
BobData is a data element from http://xmpp.org/extensions/xep-0231.html.
type BooleanFormField ¶
BooleanFormField is for a yes/no answer. The Result member should be set to the user's answer.
type ClientCaps ¶
type ClientCaps struct {
XMLName xml.Name `xml:"http://jabber.org/protocol/caps c"`
Ext string `xml:"ext,attr"`
Hash string `xml:"hash,attr"`
Node string `xml:"node,attr"`
Ver string `xml:"ver,attr"`
}
ClientCaps contains information about client capabilities
type ClientError ¶
type ClientError struct {
XMLName xml.Name `xml:"jabber:client error"`
Code string `xml:"code,attr"`
Type string `xml:"type,attr"`
Any xml.Name `xml:",any"`
Text string `xml:"text"`
}
ClientError represents a client error
type ClientIQ ¶
type ClientIQ struct {
XMLName xml.Name `xml:"jabber:client iq"`
From string `xml:"from,attr"`
ID string `xml:"id,attr"`
To string `xml:"to,attr"`
Type string `xml:"type,attr"` // error, get, result, set
Error ClientError `xml:"error"`
Bind BindBind `xml:"bind"`
Query []byte `xml:",innerxml"`
}
ClientIQ contains a specific information query request
type ClientMessage ¶
type ClientMessage struct {
XMLName xml.Name `xml:"jabber:client message"`
From string `xml:"from,attr"`
ID string `xml:"id,attr"`
To string `xml:"to,attr"`
Type string `xml:"type,attr"` // chat, error, groupchat, headline, or normal
// These should technically be []clientText,
// but string is much more convenient.
Subject string `xml:"subject"`
Body string `xml:"body"`
Thread string `xml:"thread"`
Delay *Delay `xml:"delay,omitempty"`
Error *StanzaError `xml:"error"`
Extensions `xml:",any,omitempty"`
}
ClientMessage implements RFC 3921 B.1 jabber:client
type ClientPresence ¶
type ClientPresence struct {
XMLName xml.Name `xml:"jabber:client presence"`
From string `xml:"from,attr,omitempty"`
ID string `xml:"id,attr,omitempty"`
To string `xml:"to,attr,omitempty"`
Type string `xml:"type,attr,omitempty"` // error, probe, subscribe, subscribed, unavailable, unsubscribe, unsubscribed
Lang string `xml:"lang,attr,omitempty"`
Show string `xml:"show,omitempty"` // away, chat, dnd, xa
Status string `xml:"status,omitempty"` // sb []clientText
Priority string `xml:"priority,omitempty"`
Caps *ClientCaps `xml:"c"`
Error *ClientError `xml:"error"`
Delay Delay `xml:"delay"`
}
ClientPresence contains XMPP information about a presence update
type Config ¶
type Config struct {
// InLog is an optional Writer which receives the raw contents of the
// XML from the server.
InLog io.Writer
// OutLog is an optional Writer which receives the raw XML sent to the
// server.
OutLog io.Writer
// Log is an optional Writer which receives human readable log messages
// during the connection.
Log io.Writer
// CreateCallback, if not nil, causes a new account to be created on
// the server. The callback is needed in order to be able to handle
// XMPP forms.
CreateCallback FormCallback
// Archive determines whether we disable archiving for messages. If
// false, XML is sent with each message to disable recording on the
// server.
Archive bool
// SkipTLS, if true, causes the TLS handshake to be skipped.
// WARNING: this should only be used if Conn is already secure.
SkipTLS bool
// TLSConfig contains the configuration to be used by the TLS
// handshake. If nil, sensible defaults will be used.
TLSConfig *tls.Config
// SkipSRVLookup skips SRV lookup during resolution of fully qualified domain
// names. RFC 6120 section 3.2.3 recomends to skip the SRV lookup when the
// initiating entity has a hardcoded FQDN associated with the origin domain.
SkipSRVLookup bool
}
Config contains options for an XMPP connection.
type Delay ¶
type Delay struct {
XMLName xml.Name `xml:"urn:xmpp:delay delay"`
From string `xml:"from,attr,omitempty"`
Stamp string `xml:"stamp,attr"`
Body string `xml:",chardata"`
}
Delay represents XEP-0203: Delayed Delivery of <message/> and <presence/> stanzas.
type DiscoveryFeature ¶
type DiscoveryFeature struct {
XMLName xml.Name `xml:"http://jabber.org/protocol/disco#info feature"`
Var string `xml:"var,attr"`
}
DiscoveryFeature contains information about a specific discovery feature
type DiscoveryIdentity ¶
type DiscoveryIdentity struct {
XMLName xml.Name `xml:"http://jabber.org/protocol/disco#info identity"`
Lang string `xml:"lang,attr,omitempty"`
Category string `xml:"category,attr"`
Type string `xml:"type,attr"`
Name string `xml:"name,attr"`
}
DiscoveryIdentity contains identity information for a specific discovery
type DiscoveryReply ¶
type DiscoveryReply struct {
XMLName xml.Name `xml:"http://jabber.org/protocol/disco#info query"`
Node string `xml:"node,omitempty"`
Identities []DiscoveryIdentity `xml:"identity,omitempty"`
Features []DiscoveryFeature `xml:"feature,omitempty"`
Forms []Form `xml:"jabber:x:data x,omitempty"`
}
DiscoveryReply contains the deserialized information about a discovery reply
type ErrorBadRequest ¶
type ErrorBadRequest struct {
XMLName xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-stanzas bad-request"`
}
ErrorBadRequest reflects a bad-request stanza. See http://xmpp.org/rfcs/rfc6120.html#stanzas-error-conditions-bad-request
type ErrorReply ¶
type ErrorReply struct {
XMLName xml.Name `xml:"error"`
Type string `xml:"type,attr"`
Error interface{} `xml:"error"`
}
ErrorReply reflects an XMPP error stanza. See http://xmpp.org/rfcs/rfc6120.html#stanzas-error-syntax
type Extension ¶
type Extension Any
Extension represents any XML node not included in the Stanza definition
type FailureTLS ¶
FailureTLS represents a TLS failure
type FixedFormField ¶
FixedFormField is used to indicate a section heading. It's for the form to send data to the user rather than the other way around.
type Form ¶
type Form struct {
XMLName xml.Name `xml:"jabber:x:data x"`
Type string `xml:"type,attr"`
Title string `xml:"title,omitempty"`
Instructions string `xml:"instructions,omitempty"`
Fields []FormFieldX `xml:"field"`
}
Form contains the definition for a data submission
type FormCallback ¶
FormCallback is the type of a function called to process a form. The argument is a list of pointers to FormField types. The function should type cast the elements, prompt the user and fill in the result field in each struct.
type FormField ¶
type FormField struct {
// Label is a human readable label for this field.
Label string
// Type is the XMPP-internal type of this field. One should type cast
// rather than inspect this.
Type string
// Name gives the internal name of the field.
Name string
Required bool
// Media contains one of more items of media associated with this
// field and, for each item, one or more representations of it.
Media [][]Media
}
FormField is the type of a generic form field. One should type cast to a specific type of field before processing.
type FormFieldMediaX ¶
type FormFieldMediaX struct {
XMLName xml.Name `xml:"urn:xmpp:media-element media"`
URIs []MediaURIX `xml:"uri"`
}
FormFieldMediaX contains form field media information
type FormFieldOptionX ¶
FormFieldOptionX contains a form field option
type FormFieldRequiredX ¶
FormFieldRequiredX contains information about whether a form field is required
type FormFieldX ¶
type FormFieldX struct {
XMLName xml.Name `xml:"field"`
Desc string `xml:"desc,omitempty"`
Var string `xml:"var,attr"`
Type string `xml:"type,attr,omitempty"`
Label string `xml:"label,attr,omitempty"`
Required *FormFieldRequiredX `xml:"required"`
Values []string `xml:"value"`
Options []FormFieldOptionX `xml:"option"`
Media []FormFieldMediaX `xml:"media"`
}
FormFieldX contains form field information
type InBandRegistration ¶
type InBandRegistration struct {
XMLName xml.Name `xml:"http://jabber.org/features/iq-register register,omitempty"`
}
InBandRegistration represents an inband registration
type Media ¶
type Media struct {
MIMEType string
// URI contains a URI to the data. It may be empty if Data is not.
URI string
// Data contains the raw data itself. It may be empty if URI is not.
Data []byte
}
Media contains a specific media uri and data
type MediaURIX ¶
type MediaURIX struct {
XMLName xml.Name `xml:"urn:xmpp:media-element uri"`
MIMEType string `xml:"type,attr,omitempty"`
URI string `xml:",chardata"`
}
MediaURIX contains information about a Media URI
type MultiSelectionFormField ¶
MultiSelectionFormField asks the user to pick a subset of possible choices. The Result member should be set to a series of indexes of the Results array.
type MultiTextFormField ¶
MultiTextFormField is for the entry of a several textual items. The Results member should be set to the data entered.
type PingRequest ¶
PingRequest represents a Ping IQ as defined by XEP-0199
type ProceedTLS ¶
ProceedTLS represents a TLS proceed
type RegisterQuery ¶
type RegisterQuery struct {
XMLName xml.Name `xml:"jabber:iq:register query"`
Username *xml.Name `xml:"username"`
Password *xml.Name `xml:"password"`
Form Form `xml:"x"`
Datas []BobData `xml:"data"`
}
RegisterQuery contains register query information for creating a new account
type Roster ¶
type Roster struct {
XMLName xml.Name `xml:"jabber:iq:roster query"`
Item []RosterEntry `xml:"item"`
}
Roster contains a list of roster entries
type RosterEntry ¶
type RosterEntry struct {
Jid string `xml:"jid,attr"`
Subscription string `xml:"subscription,attr"`
Name string `xml:"name,attr"`
Group []string `xml:"group"`
Ask string `xml:"ask,attr"`
}
RosterEntry contains one roster entry
func ParseRoster ¶
func ParseRoster(reply Stanza) ([]RosterEntry, error)
ParseRoster extracts roster information from the given Stanza.
type RosterRequest ¶
type RosterRequest struct {
XMLName xml.Name `xml:"jabber:iq:roster query"`
Item RosterRequestItem `xml:"item"`
}
RosterRequest is used to request that the server update the user's roster. See RFC 6121, section 2.3.
type RosterRequestItem ¶
type RosterRequestItem struct {
Jid string `xml:"jid,attr"`
Subscription string `xml:"subscription,attr"`
Name string `xml:"name,attr"`
Group []string `xml:"group"`
}
RosterRequestItem contains one specific entry
type SASLErrorCondition ¶
type SASLErrorCondition string
SASLErrorCondition represents a defined SASL-related error conditions as defined in RFC 6120, section 6.5
type SaslFailure ¶
type SaslFailure struct {
XMLName xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-sasl failure"`
Text string `xml:"text,omitempty"`
DefinedCondition Any `xml:",any"`
}
SaslFailure signifies a SASL Failure
func (SaslFailure) Condition ¶
func (f SaslFailure) Condition() SASLErrorCondition
Condition returns a SASL-related error condition
func (SaslFailure) String ¶
func (f SaslFailure) String() string
type SaslMechanisms ¶
type SaslMechanisms struct {
XMLName xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-sasl mechanisms"`
Mechanism []string `xml:"mechanism"`
}
SaslMechanisms contains information about SASL mechanisms RFC 3920 C.4 SASL name space TODO RFC 6120 obsoletes RFC 3920
type SaslSuccess ¶
type SaslSuccess struct {
XMLName xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-sasl success"`
Content []byte `xml:",innerxml"`
}
SaslSuccess signifies a SASL Success
type SelectionFormField ¶
SelectionFormField asks the user to pick a single element from a set of choices. The Result member should be set to an index of the Values array.
type StanzaError ¶
type StanzaError struct {
// cancel -- do not retry (the error is unrecoverable)
// continue -- proceed (the condition was only a warning)
// modify -- retry after changing the data sent
// auth -- retry after providing credentials
// wait -- retry after waiting (the error is temporary)
Type string `xml:"type,attr"`
Condition struct {
XMLName xml.Name
Body string `xml:",innerxml"`
} `xml:",any"`
}
StanzaError implements RFC 3920, section 9.3. TODO RFC 6120 obsoletes RFC 3920
type StartTLS ¶
type StartTLS struct {
XMLName xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-tls starttls"`
Required xml.Name `xml:"required"`
}
StartTLS represents a TLS start RFC 6120, section 5
type StreamError ¶
type StreamError struct {
XMLName xml.Name `xml:"http://etherx.jabber.org/streams error"`
Text string `xml:"text,omitempty"`
AppSpecificCondition *Any `xml:",any,omitempty"`
DefinedCondition StreamErrorCondition
}
StreamError represents an XMPP Stream Error as defined in RFC 6120, section 4.9
func (*StreamError) String ¶
func (s *StreamError) String() string
type StreamErrorCondition ¶
type StreamErrorCondition string
StreamErrorCondition represents a defined stream error condition as defined in RFC 6120, section 4.9.3
func (StreamErrorCondition) MarshalXML ¶
func (c StreamErrorCondition) MarshalXML(e *xml.Encoder, start xml.StartElement) error
MarshalXML implements xml.Marshaler interface
type StreamFeatures ¶
type StreamFeatures struct {
XMLName xml.Name `xml:"http://etherx.jabber.org/streams features"`
StartTLS StartTLS
Mechanisms SaslMechanisms
Bind BindBind
InBandRegistration *InBandRegistration
// This is a hack for now to get around the fact that the new encoding/xml
// doesn't unmarshal to XMLName elements.
Session *string `xml:"session"`
// contains filtered or unexported fields
}
StreamFeatures contain information about the features this stream supports RFC 3920 C.1 Streams name space TODO RFC 6120 obsoletes RFC 3920
type TextFormField ¶
type TextFormField struct {
FormField
Default string
Result string
// Private is true if this is a password or other sensitive entry.
Private bool
}
TextFormField is for the entry of a single textual item. The Result member should be set to the data entered.
type VCard ¶ added in v0.3.6
type VCard struct {
XMLName xml.Name `xml:"vcard-temp vCard"`
FullName string `xml:"FN"`
Nickname string `xml:"NICKNAME"`
}
VCard contains vcard
func ParseVCard ¶ added in v0.3.6
ParseVCard extracts vcard information from the given Stanza.
type VersionQuery ¶
VersionQuery represents a version query