Package pyxmpp :: Package jabber :: Module simple

[hide private]

# Source Code for Module pyxmpp.jabber.simple

     1  #
     2  # (C) Copyright 2005-2010 Jacek Konieczny <jajcus@jajcus.net>
     3  #
     4  # This program is free software; you can redistribute it and/or modify
     5  # it under the terms of the GNU Lesser General Public License Version
     6  # 2.1 as published by the Free Software Foundation.
     7  #
     8  # This program is distributed in the hope that it will be useful,
     9  # but WITHOUT ANY WARRANTY; without even the implied warranty of
    10  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    11  # GNU Lesser General Public License for more details.
    12  #
    13  # You should have received a copy of the GNU Lesser General Public
    14  # License along with this program; if not, write to the Free Software
    15  # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
    16  #
    17  # pylint: disable-msg=W0232, E0201
    18
    19  """Simple API for simple things like sendig messages or single stanzas."""
    20
    21  __docformat__="restructuredtext en"
    22
    23 -def xmpp_do(jid,password,function,server=None,port=None):
    24      """Connect as client to a Jabber/XMPP server and call the provided
    25      function when stream is ready for IM. The function will be called
    26      with one argument -- the XMPP stream. After function returns the stream is
    27      closed."""
    28      from pyxmpp.jabber.client import JabberClient
    29      class Client(JabberClient):
    30          """The simplest client implementation."""
    31          def session_started(self):
    32              """Call the function provided when the session starts and exit."""
    33              function(self.stream)
    34              self.disconnect()
    35      c=Client(jid,password,server=server,port=port)
    36      c.connect()
    37      try:
    38          c.loop(1)
    39      except KeyboardInterrupt:
    40          print u"disconnecting..."
    41          c.disconnect()
    42
    43 -def send_message(my_jid, my_password, to_jid, body, subject=None,
    44          message_type=None, server=None, port=None):
    45      """Star an XMPP session and send a message, then exit.
    46
    47      :Parameters:
    48          - `my_jid`: sender JID.
    49          - `my_password`: sender password.
    50          - `to_jid`: recipient JID.
    51          - `body`: message body.
    52          - `subject`: message subject.
    53          - `message_type`: message type.
    54          - `server`: server to connect to (default: derivied from `my_jid` using
    55            DNS records).
    56          - `port`: TCP port number to connect to (default: retrieved using SRV
    57            DNS record, or 5222).
    58      :Types:
    59          - `my_jid`: `pyxmpp.jid.JID`
    60          - `my_password`: `unicode`
    61          - `to_jid`: `pyxmpp.jid.JID`
    62          - `body`: `unicode`
    63          - `subject`: `unicode`
    64          - `message_type`: `str`
    65          - `server`: `unicode` or `str`
    66          - `port`: `int`
    67      """
    68      from pyxmpp.message import Message
    69      msg=Message(to_jid=to_jid,body=body,subject=subject,stanza_type=message_type)
    70      def fun(stream):
    71          """Send a mesage `msg` via a stream."""
    72          stream.send(msg)
    73      xmpp_do(my_jid,my_password,fun,server,port)
    74
    75  # vi: sts=4 et sw=4
    76