Documentation ¶
Overview ¶
Package xmpp implements a simple Google Talk client using the XMPP protocol described in RFC 3920 and RFC 3921.
TODO(flo):
- support password protected MUC rooms
- cleanup signatures of join/leave functions
Index ¶
- Constants
- Variables
- type Chat
- type Client
- func (c *Client) ApproveSubscription(jid string)
- func (c *Client) Close() error
- func (c *Client) Discovery() (string, error)
- func (c *Client) IsEncrypted() bool
- func (c *Client) JID() string
- func (c *Client) JoinMUC(jid, nick string, history_type, history int, history_date *time.Time) (n int, err error)
- func (c *Client) JoinMUCNoHistory(jid, nick string) (n int, err error)
- func (c *Client) JoinProtectedMUC(jid, nick string, password string, history_type, history int, ...) (n int, err error)
- func (c *Client) LeaveMUC(jid string) (n int, err error)
- func (c *Client) PingC2S(jid, server string) error
- func (c *Client) PingS2S(fromServer, toServer string) error
- func (c *Client) RawInformation(from, to, id, iqType, body string) (string, error)
- func (c *Client) RawInformationQuery(from, to, id, iqType, requestNamespace, body string) (string, error)
- func (c *Client) Recv() (stanza interface{}, err error)
- func (c *Client) RequestSubscription(jid string)
- func (c *Client) RevokeSubscription(jid string)
- func (c *Client) Roster() error
- func (c *Client) Send(chat Chat) (n int, err error)
- func (c *Client) SendHtml(chat Chat) (n int, err error)
- func (c *Client) SendKeepAlive() (n int, err error)
- func (c *Client) SendOrg(org string) (n int, err error)
- func (c *Client) SendPresence(presence Presence) (n int, err error)
- func (c *Client) SendResultPing(id, toServer string) error
- func (c *Client) SendTopic(chat Chat) (n int, err error)
- type Contact
- type Cookie
- type Delay
- type IQ
- type Options
- type Presence
- type Roster
- type XMLElement
Constants ¶
const ( NoHistory = 0 CharHistory = 1 StanzaHistory = 2 SecondsHistory = 3 SinceHistory = 4 )
const IQTypeGet = "get"
const IQTypeResult = "result"
const IQTypeSet = "set"
Variables ¶
var DebugWriter io.Writer = os.Stderr
DebugWriter is the writer used to write debugging output to.
var DefaultConfig tls.Config
Default TLS configuration options
Functions ¶
This section is empty.
Types ¶
type Chat ¶
type Chat struct { Remote string Type string Text string Subject string Thread string Roster Roster Other []string OtherElem []XMLElement Stamp time.Time }
Chat is an incoming or outgoing XMPP chat message.
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client holds XMPP connection opitons
func NewClient ¶
NewClient creates a new connection to a host given as "hostname" or "hostname:port". If host is not specified, the DNS SRV should be used to find the host from the domainpart of the JID. Default the port to 5222.
func NewClientNoTLS ¶
NewClientNoTLS creates a new client without TLS
func (*Client) ApproveSubscription ¶
func (*Client) IsEncrypted ¶
IsEncrypted will return true if the client is connected using a TLS transport, either because it used. TLS to connect from the outset, or because it successfully used STARTTLS to promote a TCP connection to TLS.
func (*Client) JoinMUC ¶
func (c *Client) JoinMUC(jid, nick string, history_type, history int, history_date *time.Time) (n int, err error)
xep-0045 7.2
func (*Client) JoinMUCNoHistory ¶
func (*Client) JoinProtectedMUC ¶
func (c *Client) JoinProtectedMUC(jid, nick string, password string, history_type, history int, history_date *time.Time) (n int, err error)
xep-0045 7.2.6
func (*Client) RawInformation ¶
rawInformation send a IQ request with the the payload body to the server
func (*Client) RawInformationQuery ¶
func (c *Client) RawInformationQuery(from, to, id, iqType, requestNamespace, body string) (string, error)
RawInformationQuery sends an information query request to the server.
func (*Client) Recv ¶
Recv waits to receive the next XMPP stanza. Return type is either a presence notification or a chat message.
func (*Client) RequestSubscription ¶
func (*Client) RevokeSubscription ¶
func (*Client) SendKeepAlive ¶
SendKeepAlive sends a "whitespace keepalive" as described in chapter 4.6.1 of RFC6120.
func (*Client) SendOrg ¶
SendOrg sends the original text without being wrapped in an XMPP message stanza.
func (*Client) SendResultPing ¶
type Options ¶
type Options struct { // Host specifies what host to connect to, as either "hostname" or "hostname:port" // If host is not specified, the DNS SRV should be used to find the host from the domainpart of the JID. // Default the port to 5222. Host string // User specifies what user to authenticate to the remote server. User string // Password supplies the password to use for authentication with the remote server. Password string // Resource specifies an XMPP client resource, like "bot", instead of accepting one // from the server. Use "" to let the server generate one for your client. Resource string // OAuthScope provides go-xmpp the required scope for OAuth2 authentication. OAuthScope string // OAuthToken provides go-xmpp with the required OAuth2 token used to authenticate OAuthToken string // OAuthXmlNs provides go-xmpp with the required namespaced used for OAuth2 authentication. This is // provided to the server as the xmlns:auth attribute of the OAuth2 authentication request. OAuthXmlNs string // TLS Config TLSConfig *tls.Config // InsecureAllowUnencryptedAuth permits authentication over a TCP connection that has not been promoted to // TLS by STARTTLS; this could leak authentication information over the network, or permit man in the middle // attacks. InsecureAllowUnencryptedAuth bool // NoTLS directs go-xmpp to not use TLS initially to contact the server; instead, a plain old unencrypted // TCP connection should be used. (Can be combined with StartTLS to support STARTTLS-based servers.) NoTLS bool // StartTLS directs go-xmpp to STARTTLS if the server supports it; go-xmpp will automatically STARTTLS // if the server requires it regardless of this option. StartTLS bool // Debug output Debug bool // Use server sessions Session bool // Presence Status Status string // Status message StatusMessage string }
Options are used to specify additional options for new clients, such as a Resource.
type XMLElement ¶
func (*XMLElement) String ¶
func (e *XMLElement) String() string