Updated Example..

This commit is contained in:
Sangeeth Saravanaraj 2015-02-05 18:10:10 +05:30
parent 8bc70264ef
commit 24264d3a07

View File

@ -1,70 +1,94 @@
#!/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 sleekxmpp import ClientXMPP
from optparse import OptionParser
import logging import logging
import getpass
# def tracefunc(frame, event, arg, indent=[0]):
# prefix = "/Users/sangeeth/code/SleekXMPP/sleekxmpp/"
# if not frame.f_code.co_filename.startswith(prefix):
# return tracefunc
# if event == "call":
# indent[0] += 2
# cn = getattr(
# getattr(frame.f_locals.get("self"), "__class__", None),
# "__name__", None
# )
# print "{}{} {} {}".format(
# "." * indent[0], frame.f_code.co_filename[len(prefix):],
# cn, frame.f_code.co_name
# )
# elif event == "return":
# indent[0] -= 2
# return tracefunc
#
#
# import sys
# sys.settrace(tracefunc)
class HTTPOverXMPPClient(ClientXMPP): class HTTPOverXMPPClient(ClientXMPP):
def __init__(self, jid, password): def __init__(self, jid, password):
ClientXMPP.__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)
self.register_plugin('xep_0332') # HTTP over XMPP def http_request_received(self, iq):
# self.register_plugin('xep_0030') # Service Discovery pass
# self.register_plugin('xep_0004') # Data Forms
# self.register_plugin('xep_0060') # PubSub def http_response_received(self, iq):
# self.register_plugin('xep_0199') # XMPP Ping print 'HTTP Response Received : ', iq
# print 'From : ', iq['from']
# self.add_event_handler("session_start", self.session_start) print 'To : ', iq['to']
# self.add_event_handler("connected", self.connected) print 'Type : ', iq['type']
# print 'Headers : ', iq['resp']['headers']
# def session_start(self, event): print 'Code : ', iq['resp']['code']
# print "Client::session_start()" print 'Message : ', iq['resp']['message']
# self.send_presence() print 'Data : ', iq['resp']['data']
# print self.get_roster()
# def session_start(self, event):
# def connected(self, event): # TODO: Fill in the blanks
# print "Client::connected()" self['xep_0332'].send_request(
to='?', method='?', resource='?', headers={}
)
self.disconnect()
def get_cred(filename="/tmp/.cred"): if __name__ == '__main__':
with open(filename, "r") as f:
return f.readline().split()
parser = OptionParser()
if __name__ == "__main__": # Output verbosity options.
parser.add_option(
logging.basicConfig( '-v', '--verbose', help='set logging to DEBUG', action='store_const',
level=logging.DEBUG, format='%(levelname)-8s %(message)s' dest='loglevel', const=logging.DEBUG, default=logging.ERROR
) )
jid, password = get_cred() # JID and password options.
xmpp = HTTPOverXMPPClient(jid, password) parser.add_option('-J', '--jid', dest='jid', help='JID')
if xmpp.connect(("talk.l.google.com", 5222)): parser.add_option('-P', '--password', dest='password', help='Password')
print "Connected!"
# 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) xmpp.process(block=True)
else: else:
print "Not connected!" print 'Not connected!'
print "Goodbye...." print 'Goodbye....'