diff options
Diffstat (limited to 'examples')
-rwxr-xr-x | examples/IoT_TestDevice.py | 22 | ||||
-rwxr-xr-x | examples/disco_browser.py | 2 | ||||
-rw-r--r-- | examples/http_over_xmpp.py | 101 | ||||
-rwxr-xr-x | examples/migrate_roster.py | 2 | ||||
-rwxr-xr-x | examples/roster_browser.py | 2 | ||||
-rwxr-xr-x | examples/set_avatar.py | 2 |
6 files changed, 111 insertions, 20 deletions
diff --git a/examples/IoT_TestDevice.py b/examples/IoT_TestDevice.py index 8105aaff..b85a0b7c 100755 --- a/examples/IoT_TestDevice.py +++ b/examples/IoT_TestDevice.py @@ -11,18 +11,10 @@ See the file LICENSE for copying permission. """ -import os -import sys -# This can be used when you are in a test environment and need to make paths right -sys.path=['/Users/jocke/Dropbox/06_dev/SleekXMPP']+sys.path - +import getpass import logging -import unittest -import distutils.core -import datetime +import sys -from glob import glob -from os.path import splitext, basename, join as pjoin from optparse import OptionParser from urllib import urlopen @@ -39,8 +31,6 @@ else: from sleekxmpp.plugins.xep_0323.device import Device -#from sleekxmpp.exceptions import IqError, IqTimeout - class IoT_TestDevice(sleekxmpp.ClientXMPP): """ @@ -179,13 +169,13 @@ if __name__ == '__main__': # node=opts.nodeid, # jid=xmpp.boundjid.full) - myDevice = TheDevice(opts.nodeid); + myDevice = TheDevice(opts.nodeid) # myDevice._add_field(name="Relay", typename="numeric", unit="Bool"); - myDevice._add_field(name="Temperature", typename="numeric", unit="C"); + myDevice._add_field(name="Temperature", typename="numeric", unit="C") myDevice._set_momentary_timestamp("2013-03-07T16:24:30") - myDevice._add_field_momentary_data("Temperature", "23.4", flags={"automaticReadout": "true"}); + myDevice._add_field_momentary_data("Temperature", "23.4", flags={"automaticReadout": "true"}) - xmpp['xep_0323'].register_node(nodeId=opts.nodeid, device=myDevice, commTimeout=10); + xmpp['xep_0323'].register_node(nodeId=opts.nodeid, device=myDevice, commTimeout=10) xmpp.beClientOrServer(server=True) while not(xmpp.testForRelease()): xmpp.connect() diff --git a/examples/disco_browser.py b/examples/disco_browser.py index aeb4fb5e..78626e7c 100755 --- a/examples/disco_browser.py +++ b/examples/disco_browser.py @@ -94,7 +94,7 @@ class Disco(sleekxmpp.ClientXMPP): info = self['xep_0030'].get_info(jid=self.target_jid, node=self.target_node, block=True) - elif self.get in self.items_types: + if self.get in self.items_types: # The same applies from above. Listen for the # disco_items event or pass a callback function # if you need to process a non-blocking request. diff --git a/examples/http_over_xmpp.py b/examples/http_over_xmpp.py new file mode 100644 index 00000000..a2fbf664 --- /dev/null +++ b/examples/http_over_xmpp.py @@ -0,0 +1,101 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" + SleekXMPP: The Sleek XMPP Library + Implementation of HTTP over XMPP transport + http://xmpp.org/extensions/xep-0332.html + Copyright (C) 2015 Riptide IO, sangeeth@riptideio.com + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +from sleekxmpp import ClientXMPP + +from optparse import OptionParser +import logging +import getpass + + +class HTTPOverXMPPClient(ClientXMPP): + def __init__(self, jid, password): + ClientXMPP.__init__(self, jid, password) + self.register_plugin('xep_0332') # HTTP over XMPP Transport + self.add_event_handler( + 'session_start', self.session_start, threaded=True + ) + self.add_event_handler('http_request', self.http_request_received) + self.add_event_handler('http_response', self.http_response_received) + + def http_request_received(self, iq): + pass + + def http_response_received(self, iq): + print 'HTTP Response Received : ', iq + print 'From : ', iq['from'] + print 'To : ', iq['to'] + print 'Type : ', iq['type'] + print 'Headers : ', iq['resp']['headers'] + print 'Code : ', iq['resp']['code'] + print 'Message : ', iq['resp']['message'] + print 'Data : ', iq['resp']['data'] + + def session_start(self, event): + # TODO: Fill in the blanks + self['xep_0332'].send_request( + to='?', method='?', resource='?', headers={} + ) + self.disconnect() + + +if __name__ == '__main__': + + # + # NOTE: To run this example, fill up the blanks in session_start() and + # use the following command. + # + # ./http_over_xmpp.py -J <jid> -P <pwd> -i <ip> -p <port> [-v] + # + + parser = OptionParser() + + # Output verbosity options. + parser.add_option( + '-v', '--verbose', help='set logging to DEBUG', action='store_const', + dest='loglevel', const=logging.DEBUG, default=logging.ERROR + ) + + # JID and password options. + parser.add_option('-J', '--jid', dest='jid', help='JID') + parser.add_option('-P', '--password', dest='password', help='Password') + + # XMPP server ip and port options. + parser.add_option( + '-i', '--ipaddr', dest='ipaddr', + help='IP Address of the XMPP server', default=None + ) + parser.add_option( + '-p', '--port', dest='port', + help='Port of the XMPP server', default=None + ) + + opts, args = parser.parse_args() + + # Setup logging. + logging.basicConfig(level=opts.loglevel, + format='%(levelname)-8s %(message)s') + + if opts.jid is None: + opts.jid = raw_input('Username: ') + if opts.password is None: + opts.password = getpass.getpass('Password: ') + + xmpp = HTTPOverXMPPClient(opts.jid, opts.password) + if xmpp.connect((opts.ipaddr, int(opts.port))): + print 'Connected!' + xmpp.process(block=True) + else: + print 'Not connected!' + print 'Goodbye....' + diff --git a/examples/migrate_roster.py b/examples/migrate_roster.py index 797e4f44..9f679523 100755 --- a/examples/migrate_roster.py +++ b/examples/migrate_roster.py @@ -113,7 +113,7 @@ def on_session2(event): new_xmpp.update_roster(jid, name = item['name'], groups = item['groups']) - new_xmpp.disconnect() + new_xmpp.disconnect() new_xmpp.add_event_handler('session_start', on_session2) if new_xmpp.connect(): diff --git a/examples/roster_browser.py b/examples/roster_browser.py index 485ac941..a16de24c 100755 --- a/examples/roster_browser.py +++ b/examples/roster_browser.py @@ -68,7 +68,7 @@ class RosterBrowser(sleekxmpp.ClientXMPP): try: self.get_roster() except IqError as err: - print('Error: %' % err.iq['error']['condition']) + print('Error: %s' % err.iq['error']['condition']) except IqTimeout: print('Error: Request timed out') self.send_presence() diff --git a/examples/set_avatar.py b/examples/set_avatar.py index cae93c99..08e0b664 100755 --- a/examples/set_avatar.py +++ b/examples/set_avatar.py @@ -63,7 +63,7 @@ class AvatarSetter(sleekxmpp.ClientXMPP): avatar_file = None try: - avatar_file = open(os.path.expanduser(self.filepath)) + avatar_file = open(os.path.expanduser(self.filepath), 'rb') except IOError: print('Could not find file: %s' % self.filepath) return self.disconnect() |