aboutsummaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
Diffstat (limited to 'common')
-rw-r--r--common/LICENSE_HEADER10
-rw-r--r--common/Makefile16
-rw-r--r--common/PubnubBase.py364
-rw-r--r--common/PubnubCore.py115
-rw-r--r--common/PubnubCoreAsync.py180
-rw-r--r--common/PubnubCrypto.py81
-rw-r--r--common/PubnubUnitTest.py59
-rw-r--r--common/unit-test-async.py97
8 files changed, 83 insertions, 839 deletions
diff --git a/common/LICENSE_HEADER b/common/LICENSE_HEADER
deleted file mode 100644
index a83793d..0000000
--- a/common/LICENSE_HEADER
+++ /dev/null
@@ -1,10 +0,0 @@
-## www.pubnub.com - PubNub Real-time push service in the cloud.
-# coding=utf8
-
-## PubNub Real-time Push APIs and Notifications Framework
-## Copyright (c) 2010 Stephen Blum
-## http://www.pubnub.com/
-
-## -----------------------------------
-## PubNub 3.3.4 Real-time Push Cloud API
-## -----------------------------------
diff --git a/common/Makefile b/common/Makefile
deleted file mode 100644
index 1be6f8c..0000000
--- a/common/Makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-include ../Makefile.inc
-
-
-.PHONY: all
-all: build
-
-.PHONY: build
-build:
- find -name "Pubnub*py" | xargs sed -i "s/PubNub\ [0-9]\.[0-9]\.[0-9]/PubNub\ $(VERSION)/g"
-
-
-.PHONY: clean
-clean:
-
-.PHONY: test
-test:
diff --git a/common/PubnubBase.py b/common/PubnubBase.py
deleted file mode 100644
index 5856921..0000000
--- a/common/PubnubBase.py
+++ /dev/null
@@ -1,364 +0,0 @@
-try: import json
-except ImportError: import simplejson as json
-
-import time
-import hashlib
-import urllib2
-import uuid
-
-class PubnubBase(object):
- def __init__(
- self,
- publish_key,
- subscribe_key,
- secret_key = False,
- cipher_key = False,
- ssl_on = False,
- origin = 'pubsub.pubnub.com',
- UUID = None
- ) :
- """
- #**
- #* Pubnub
- #*
- #* Init the Pubnub Client API
- #*
- #* @param string publish_key required key to send messages.
- #* @param string subscribe_key required key to receive messages.
- #* @param string secret_key optional key to sign messages.
- #* @param boolean ssl required for 2048 bit encrypted messages.
- #* @param string origin PUBNUB Server Origin.
- #* @param string pres_uuid optional identifier for presence (auto-generated if not supplied)
- #**
-
- ## Initiat Class
- pubnub = Pubnub( 'PUBLISH-KEY', 'SUBSCRIBE-KEY', 'SECRET-KEY', False )
-
- """
- self.origin = origin
- self.limit = 1800
- self.publish_key = publish_key
- self.subscribe_key = subscribe_key
- self.secret_key = secret_key
- self.cipher_key = cipher_key
- self.ssl = ssl_on
- self.pc = PubnubCrypto()
-
- if self.ssl :
- self.origin = 'https://' + self.origin
- else :
- self.origin = 'http://' + self.origin
-
- self.uuid = UUID or str(uuid.uuid4())
-
- if not isinstance(self.uuid, basestring):
- raise AttributeError("pres_uuid must be a string")
-
- def sign(self, channel, message):
- ## Sign Message
- if self.secret_key:
- signature = hashlib.md5('/'.join([
- self.publish_key,
- self.subscribe_key,
- self.secret_key,
- channel,
- message
- ])).hexdigest()
- else:
- signature = '0'
- return signature
-
- def encrypt(self, message):
- if self.cipher_key:
- message = json.dumps(self.pc.encrypt(self.cipher_key, json.dumps(message)).replace('\n',''))
- else :
- message = json.dumps(message)
-
- return message;
-
- def decrypt(self, message):
- if self.cipher_key:
- message = self.pc.decrypt(self.cipher_key, message)
-
- return message
-
-
- def publish( self, args ) :
- """
- #**
- #* Publish
- #*
- #* Send a message to a channel.
- #*
- #* @param array args with channel and message.
- #* @return array success information.
- #**
-
- ## Publish Example
- info = pubnub.publish({
- 'channel' : 'hello_world',
- 'message' : {
- 'some_text' : 'Hello my World'
- }
- })
- print(info)
-
- """
- ## Fail if bad input.
- if not (args['channel'] and args['message']) :
- return [ 0, 'Missing Channel or Message' ]
-
- ## Capture User Input
- channel = str(args['channel'])
-
- ## Capture Callback
- if args.has_key('callback') :
- callback = args['callback']
- else :
- callback = None
-
- #message = json.dumps(args['message'], separators=(',',':'))
- message = self.encrypt(args['message'])
-
- signature = self.sign(channel, message)
-
- ## Send Message
- return self._request({"urlcomponents": [
- 'publish',
- self.publish_key,
- self.subscribe_key,
- signature,
- channel,
- '0',
- message
- ]}, callback)
-
- def presence( self, args ) :
- """
- #**
- #* presence
- #*
- #* This is BLOCKING.
- #* Listen for presence events on a channel.
- #*
- #* @param array args with channel and callback.
- #* @return false on fail, array on success.
- #**
-
- ## Presence Example
- def pres_event(message) :
- print(message)
- return True
-
- pubnub.presence({
- 'channel' : 'hello_world',
- 'callback' : receive
- })
- """
-
- ## Fail if missing channel
- if not 'channel' in args :
- raise Exception('Missing Channel.')
- return False
-
- ## Fail if missing callback
- if not 'callback' in args :
- raise Exception('Missing Callback.')
- return False
-
- ## Capture User Input
- channel = str(args['channel'])
- callback = args['callback']
- subscribe_key = args.get('subscribe_key') or self.subscribe_key
-
- return self.subscribe({'channel': channel+'-pnpres', 'subscribe_key':subscribe_key, 'callback': callback})
-
-
- def here_now( self, args ) :
- """
- #**
- #* Here Now
- #*
- #* Load current occupancy from a channel.
- #*
- #* @param array args with 'channel'.
- #* @return mixed false on fail, array on success.
- #*
-
- ## Presence Example
- here_now = pubnub.here_now({
- 'channel' : 'hello_world',
- })
- print(here_now['occupancy'])
- print(here_now['uuids'])
-
- """
- channel = str(args['channel'])
-
- ## Capture Callback
- if args.has_key('callback') :
- callback = args['callback']
- else :
- callback = None
-
- ## Fail if bad input.
- if not channel :
- raise Exception('Missing Channel')
- return False
-
- ## Get Presence Here Now
- return self._request({"urlcomponents": [
- 'v2','presence',
- 'sub_key', self.subscribe_key,
- 'channel', channel
- ]}, callback);
-
-
- def history( self, args ) :
- """
- #**
- #* History
- #*
- #* Load history from a channel.
- #*
- #* @param array args with 'channel' and 'limit'.
- #* @return mixed false on fail, array on success.
- #*
-
- ## History Example
- history = pubnub.history({
- 'channel' : 'hello_world',
- 'limit' : 1
- })
- print(history)
-
- """
- ## Capture User Input
- limit = args.has_key('limit') and int(args['limit']) or 10
- channel = str(args['channel'])
-
- ## Fail if bad input.
- if not channel :
- raise Exception('Missing Channel')
- return False
-
- ## Capture Callback
- if args.has_key('callback') :
- callback = args['callback']
- else :
- callback = None
-
- ## Get History
- return self._request({ "urlcomponents" : [
- 'history',
- self.subscribe_key,
- channel,
- '0',
- str(limit)
- ] }, callback);
-
- def detailedHistory(self, args) :
- """
- #**
- #* Detailed History
- #*
- #* Load Detailed history from a channel.
- #*
- #* @param array args with 'channel', optional: 'start', 'end', 'reverse', 'count'
- #* @return mixed false on fail, array on success.
- #*
-
- ## History Example
- history = pubnub.detailedHistory({
- 'channel' : 'hello_world',
- 'count' : 5
- })
- print(history)
-
- """
- ## Capture User Input
- channel = str(args['channel'])
-
- params = dict()
- count = 100
-
- if args.has_key('count'):
- count = int(args['count'])
-
- params['count'] = str(count)
-
- if args.has_key('reverse'):
- params['reverse'] = str(args['reverse']).lower()
-
- if args.has_key('start'):
- params['start'] = str(args['start'])
-
- if args.has_key('end'):
- params['end'] = str(args['end'])
-
- ## Fail if bad input.
- if not channel :
- raise Exception('Missing Channel')
- return False
-
- ## Capture Callback
- if args.has_key('callback') :
- callback = args['callback']
- else :
- callback = None
-
- ## Get History
- return self._request({ 'urlcomponents' : [
- 'v2',
- 'history',
- 'sub-key',
- self.subscribe_key,
- 'channel',
- channel,
- ],'urlparams' : params }, callback=callback);
-
- def time(self, args = None) :
- """
- #**
- #* Time
- #*
- #* Timestamp from PubNub Cloud.
- #*
- #* @return int timestamp.
- #*
-
- ## PubNub Server Time Example
- timestamp = pubnub.time()
- print(timestamp)
-
- """
- ## Capture Callback
- if args and args.has_key('callback') :
- callback = args['callback']
- else :
- callback = None
- time = self._request({'urlcomponents' : [
- 'time',
- '0'
- ]}, callback)
- if time != None:
- return time[0]
-
-
- def _encode( self, request ) :
- return [
- "".join([ ' ~`!@#$%^&*()+=[]\\{}|;\':",./<>?'.find(ch) > -1 and
- hex(ord(ch)).replace( '0x', '%' ).upper() or
- ch for ch in list(bit)
- ]) for bit in request]
-
- def getUrl(self,request):
- ## Build URL
- url = self.origin + '/' + "/".join([
- "".join([ ' ~`!@#$%^&*()+=[]\\{}|;\':",./<>?'.find(ch) > -1 and
- hex(ord(ch)).replace( '0x', '%' ).upper() or
- ch for ch in list(bit)
- ]) for bit in request["urlcomponents"]])
- if (request.has_key("urlparams")):
- url = url + '?' + "&".join([ x + "=" + y for x,y in request["urlparams"].iteritems()])
- return url
diff --git a/common/PubnubCore.py b/common/PubnubCore.py
deleted file mode 100644
index dcfd319..0000000
--- a/common/PubnubCore.py
+++ /dev/null
@@ -1,115 +0,0 @@
-class PubnubCore(PubnubBase):
- def __init__(
- self,
- publish_key,
- subscribe_key,
- secret_key = False,
- cipher_key = False,
- ssl_on = False,
- origin = 'pubsub.pubnub.com',
- uuid = None
- ) :
- """
- #**
- #* Pubnub
- #*
- #* Init the Pubnub Client API
- #*
- #* @param string publish_key required key to send messages.
- #* @param string subscribe_key required key to receive messages.
- #* @param string secret_key optional key to sign messages.
- #* @param boolean ssl required for 2048 bit encrypted messages.
- #* @param string origin PUBNUB Server Origin.
- #* @param string pres_uuid optional identifier for presence (auto-generated if not supplied)
- #**
-
- ## Initiat Class
- pubnub = Pubnub( 'PUBLISH-KEY', 'SUBSCRIBE-KEY', 'SECRET-KEY', False )
-
- """
- super(PubnubCore, self).__init__(
- publish_key=publish_key,
- subscribe_key=subscribe_key,
- secret_key=secret_key,
- cipher_key=cipher_key,
- ssl_on=ssl_on,
- origin=origin,
- UUID=uuid
- )
-
- self.subscriptions = {}
- self.timetoken = 0
- self.version = '3.4'
- self.accept_encoding = 'gzip'
-
-
-
- def subscribe( self, args ) :
- """
- #**
- #* Subscribe
- #*
- #* This is BLOCKING.
- #* Listen for a message on a channel.
- #*
- #* @param array args with channel and callback.
- #* @return false on fail, array on success.
- #**
-
- ## Subscribe Example
- def receive(message) :
- print(message)
- return True
-
- pubnub.subscribe({
- 'channel' : 'hello_world',
- 'callback' : receive
- })
-
- """
-
- ## Fail if missing channel
- if not 'channel' in args :
- raise Exception('Missing Channel.')
- return False
-
- ## Fail if missing callback
- if not 'callback' in args :
- raise Exception('Missing Callback.')
- return False
-
- ## Capture User Input
- channel = str(args['channel'])
- callback = args['callback']
- subscribe_key = args.get('subscribe_key') or self.subscribe_key
-
- ## Begin Subscribe
- while True :
-
- timetoken = 'timetoken' in args and args['timetoken'] or 0
- try :
- ## Wait for Message
- response = self._request({"urlcomponents" : [
- 'subscribe',
- subscribe_key,
- channel,
- '0',
- str(timetoken)
- ],"urlparams" : {"uuid" : self.uuid }})
-
- messages = response[0]
- args['timetoken'] = response[1]
-
- ## If it was a timeout
- if not len(messages) :
- continue
-
- ## Run user Callback and Reconnect if user permits.
- for message in messages :
- if not callback(self.decrypt(message)) :
- return
-
- except Exception:
- time.sleep(1)
-
- return True
diff --git a/common/PubnubCoreAsync.py b/common/PubnubCoreAsync.py
deleted file mode 100644
index a7fbb7d..0000000
--- a/common/PubnubCoreAsync.py
+++ /dev/null
@@ -1,180 +0,0 @@
-try:
- from hashlib import sha256
- digestmod = sha256
-except ImportError:
- import Crypto.Hash.SHA256 as digestmod
- sha256 = digestmod.new
-import hmac
-
-class PubnubCoreAsync(PubnubBase):
-
- def start(self): pass
- def stop(self): pass
- def timeout( self, delay, callback ):
- pass
-
- def __init__(
- self,
- publish_key,
- subscribe_key,
- secret_key = False,
- cipher_key = False,
- ssl_on = False,
- origin = 'pubsub.pubnub.com',
- uuid = None
- ) :
- """
- #**
- #* Pubnub
- #*
- #* Init the Pubnub Client API
- #*
- #* @param string publish_key required key to send messages.
- #* @param string subscribe_key required key to receive messages.
- #* @param string secret_key required key to sign messages.
- #* @param boolean ssl required for 2048 bit encrypted messages.
- #* @param string origin PUBNUB Server Origin.
- #**
-
- ## Initiat Class
- pubnub = Pubnub( 'PUBLISH-KEY', 'SUBSCRIBE-KEY', 'SECRET-KEY', False )
-
- """
- super(PubnubCoreAsync, self).__init__(
- publish_key=publish_key,
- subscribe_key=subscribe_key,
- secret_key=secret_key,
- cipher_key=cipher_key,
- ssl_on=ssl_on,
- origin=origin,
- UUID=uuid
- )
-
- self.subscriptions = {}
- self.timetoken = 0
- self.version = '3.3.4'
- self.accept_encoding = 'gzip'
-
- def subscribe( self, args ) :
- """
- #**
- #* Subscribe
- #*
- #* This is NON-BLOCKING.
- #* Listen for a message on a channel.
- #*
- #* @param array args with channel and message.
- #* @return false on fail, array on success.
- #**
-
- ## Subscribe Example
- def receive(message) :
- print(message)
- return True
-
- ## On Connect Callback
- def connected() :
- pubnub.publish({
- 'channel' : 'hello_world',
- 'message' : { 'some_var' : 'text' }
- })
-
- ## Subscribe
- pubnub.subscribe({
- 'channel' : 'hello_world',
- 'connect' : connected,
- 'callback' : receive
- })
-
- """
- ## Fail if missing channel
- if not 'channel' in args :
- return 'Missing Channel.'
-
- ## Fail if missing callback
- if not 'callback' in args :
- return 'Missing Callback.'
-
- ## Capture User Input
- channel = str(args['channel'])
- callback = args['callback']
- connectcb = args['connect']
-
- if 'errorback' in args:
- errorback = args['errorback']
- else:
- errorback = lambda x: x
-
- ## New Channel?
- if not (channel in self.subscriptions) :
- self.subscriptions[channel] = {
- 'first' : False,
- 'connected' : False,
- }
-
- ## Ensure Single Connection
- if self.subscriptions[channel]['connected'] :
- return "Already Connected"
-
- self.subscriptions[channel]['connected'] = 1
- ## SUBSCRIPTION RECURSION
- def _subscribe():
- ## STOP CONNECTION?
- if not self.subscriptions[channel]['connected']:
- return
-
- def sub_callback(response):
- if not self.subscriptions[channel]['first'] :
- self.subscriptions[channel]['first'] = True
- connectcb()
-
- ## STOP CONNECTION?
- if not self.subscriptions[channel]['connected']:
- return
-
-
-
- ## PROBLEM?
- if not response:
- def time_callback(_time):
- if not _time:
- self.timeout( 1, _subscribe )
- return errorback("Lost Network Connection")
- else:
- self.timeout( 1, _subscribe)
-
- ## ENSURE CONNECTED (Call Time Function)
- return self.time({ 'callback' : time_callback })
-
- self.timetoken = response[1]
- _subscribe()
-
- pc = PubnubCrypto()
- out = []
- for message in response[0]:
- callback(self.decrypt(message))
-
- ## CONNECT TO PUBNUB SUBSCRIBE SERVERS
- try:
- self._request( { "urlcomponents" : [
- 'subscribe',
- self.subscribe_key,
- channel,
- '0',
- str(self.timetoken)
- ], "urlparams" : {"uuid":self.uuid} }, sub_callback )
- except :
- self.timeout( 1, _subscribe)
- return
-
- ## BEGIN SUBSCRIPTION (LISTEN FOR MESSAGES)
- _subscribe()
- def unsubscribe( self, args ):
- channel = str(args['channel'])
- if not (channel in self.subscriptions):
- return False
-
- ## DISCONNECT
- self.subscriptions[channel]['connected'] = 0
- self.subscriptions[channel]['timetoken'] = 0
- self.subscriptions[channel]['first'] = False
diff --git a/common/PubnubCrypto.py b/common/PubnubCrypto.py
deleted file mode 100644
index df7cb8d..0000000
--- a/common/PubnubCrypto.py
+++ /dev/null
@@ -1,81 +0,0 @@
-from Crypto.Cipher import AES
-from Crypto.Hash import MD5
-from base64 import encodestring, decodestring
-import hashlib
-import hmac
-
-class PubnubCrypto() :
- """
- #**
- #* PubnubCrypto
- #*
- #**
-
- ## Initiate Class
- pc = PubnubCrypto
-
- """
-
- def pad( self, msg, block_size=16 ):
- """
- #**
- #* pad
- #*
- #* pad the text to be encrypted
- #* appends a padding character to the end of the String
- #* until the string has block_size length
- #* @return msg with padding.
- #**
- """
- padding = block_size - (len(msg) % block_size)
- return msg + chr(padding)*padding
-
- def depad( self, msg ):
- """
- #**
- #* depad
- #*
- #* depad the decryptet message"
- #* @return msg without padding.
- #**
- """
- return msg[0:-ord(msg[-1])]
-
- def getSecret( self, key ):
- """
- #**
- #* getSecret
- #*
- #* hases the key to MD5
- #* @return key in MD5 format
- #**
- """
- return hashlib.sha256(key).hexdigest()
-
- def encrypt( self, key, msg ):
- """
- #**
- #* encrypt
- #*
- #* encrypts the message
- #* @return message in encrypted format
- #**
- """
- secret = self.getSecret(key)
- Initial16bytes='0123456789012345'
- cipher = AES.new(secret[0:32],AES.MODE_CBC,Initial16bytes)
- enc = encodestring(cipher.encrypt(self.pad(msg)))
- return enc
- def decrypt( self, key, msg ):
- """
- #**
- #* decrypt
- #*
- #* decrypts the message
- #* @return message in decryped format
- #**
- """
- secret = self.getSecret(key)
- Initial16bytes='0123456789012345'
- cipher = AES.new(secret[0:32],AES.MODE_CBC,Initial16bytes)
- return self.depad((cipher.decrypt(decodestring(msg))))
diff --git a/common/PubnubUnitTest.py b/common/PubnubUnitTest.py
index 2f9d28c..518d226 100644
--- a/common/PubnubUnitTest.py
+++ b/common/PubnubUnitTest.py
@@ -1,36 +1,37 @@
import time
+
class Suite():
- def __init__(self, pubnub, expected):
- self.pubnub = pubnub
- self.total = expected
- self.passed = 0
- self.failed = 0
- self.started = False
+ def __init__(self, pubnub, expected):
+ self.pubnub = pubnub
+ self.total = expected
+ self.passed = 0
+ self.failed = 0
+ self.started = False
- def test(self, condition , name, message = None, response = None):
+ def test(self, condition, name, message=None, response=None):
- if condition:
- self.passed += 1
- msg = "PASS : " + name
- if message:
- msg += ", " + message
- if response:
- msg += ", " + response
- print msg
- else:
- self.failed += 1
- msg = "FAIL : " + name
- if message:
- msg += ", " + message
- if response:
- msg += ", " + response
- print msg
+ if condition:
+ self.passed += 1
+ msg = "PASS : " + name
+ if message:
+ msg += ", " + message
+ if response:
+ msg += ", " + response
+ print msg
+ else:
+ self.failed += 1
+ msg = "FAIL : " + name
+ if message:
+ msg += ", " + message
+ if response:
+ msg += ", " + response
+ print msg
- if self.total == self.failed + self.passed:
- print "\n======== RESULT ========"
- print "Total\t:\t", self.total
- print "Passed\t:\t", self.passed
- print "Failed\t:\t", self.failed
- self.pubnub.stop()
+ if self.total == self.failed + self.passed:
+ print "\n======== RESULT ========"
+ print "Total\t:\t", self.total
+ print "Passed\t:\t", self.passed
+ print "Failed\t:\t", self.failed
+ self.pubnub.stop()
diff --git a/common/unit-test-async.py b/common/unit-test-async.py
index f95c759..c4dfb65 100644
--- a/common/unit-test-async.py
+++ b/common/unit-test-async.py
@@ -1,4 +1,4 @@
-## www.pubnub.com - PubNub Real-time push service in the cloud.
+## www.pubnub.com - PubNub Real-time push service in the cloud.
# coding=utf8
## PubNub Real-time Push APIs and Notifications Framework
@@ -12,47 +12,47 @@
import sys
import time
import random
-sys.path.append('../')
-sys.path.append('./')
-sys.path.append('../common/')
from Pubnub import Pubnub
-publish_key = len(sys.argv) > 1 and sys.argv[1] or 'demo'
+publish_key = len(sys.argv) > 1 and sys.argv[1] or 'demo'
subscribe_key = len(sys.argv) > 2 and sys.argv[2] or 'demo'
-secret_key = len(sys.argv) > 3 and sys.argv[3] or None
-cipher_key = len(sys.argv) > 4 and sys.argv[4] or None
-ssl_on = len(sys.argv) > 5 and bool(sys.argv[5]) or False
+secret_key = len(sys.argv) > 3 and sys.argv[3] or None
+cipher_key = len(sys.argv) > 4 and sys.argv[4] or None
+ssl_on = len(sys.argv) > 5 and bool(sys.argv[5]) or False
## -----------------------------------------------------------------------
## Initiat Class
## -----------------------------------------------------------------------
-pubnub = Pubnub( publish_key, subscribe_key, secret_key, cipher_key, ssl_on )
+pubnub = Pubnub(publish_key, subscribe_key, secret_key, cipher_key, ssl_on)
ch = 'python-async-test-channel-'
expect = 0
done = 0
failures = 0
passes = 0
+
def stop():
global done
global count
pubnub.stop()
print "============================"
- print 'Total\t:\t' , failures + passes
- print 'PASS\t:\t' , passes
+ print 'Total\t:\t', failures + passes
+ print 'PASS\t:\t', passes
print 'FAIL\t:\t', failures
print "============================"
## ---------------------------------------------------------------------------
## Unit Test Function
## ---------------------------------------------------------------------------
-def test( trial, name ) :
+
+
+def test(trial, name):
global failures
global passes
global done
done += 1
#print trial
- if trial == False:
+ if trial is False:
print 'FAIL : ', name
failures += 1
else:
@@ -61,77 +61,87 @@ def test( trial, name ) :
if done == expect:
stop()
+
def test_publish():
channel = ch + str(random.random())
+
def publish_cb(messages):
test(messages[0] == 1, "Publish Test")
pubnub.publish({
- 'channel' : channel,
- 'message' : {'one': 'Hello World! --> ɂ顶@#$%^&*()!', 'two': 'hello2'},
- 'callback' : publish_cb
- })
+ 'channel': channel,
+ 'message': {'one': 'Hello World! --> ɂ顶@#$%^&*()!', 'two': 'hello2'},
+ 'callback': publish_cb
+ })
def test_history():
channel = ch + str(random.random())
+
def history_cb(messages):
- test(len(messages) <= 1, "History Test")
+ test(len(messages) <= 1, "History Test")
pubnub.history({
- 'channel' : channel,
- 'limit' : 1,
- 'callback' : history_cb
+ 'channel': channel,
+ 'limit': 1,
+ 'callback': history_cb
})
-
def test_subscribe():
message = "Testing Subscribe " + str(random.random())
channel = ch + str(random.random())
+
def subscribe_connect_cb():
def publish_cb(response):
- test(response[0] == 1, 'Publish Test in subscribe Connect Callback')
+ test(response[0] == 1,
+ 'Publish Test in subscribe Connect Callback')
pubnub.publish({
- 'channel' : channel,
- 'message' : message,
- 'callback' : publish_cb
+ 'channel': channel,
+ 'message': message,
+ 'callback': publish_cb
})
+
def subscribe_cb(response):
- test(response == message , 'Subscribe Receive Test in subscribe Callback')
+ test(response == message,
+ 'Subscribe Receive Test in subscribe Callback')
pubnub.subscribe({
- 'channel' : channel,
- 'connect' : subscribe_connect_cb,
+ 'channel': channel,
+ 'connect': subscribe_connect_cb,
'callback': subscribe_cb
- })
-
+ })
+
def test_here_now():
- channel = ch + str(random.random())
+ channel = ch + str(random.random())
message = "Testing Subscribe"
+
def subscribe_connect_cb():
def here_now_cb(response):
test(response["occupancy"] > 0, 'Here Now Test')
+
def publish_cb(response):
- test(response[0] == 1, 'Here Now Test: Publish Test in subscribe Connect Callback')
+ test(response[0] == 1,
+ 'Here Now Test: Publish Test in \
+ subscribe Connect Callback')
pubnub.publish({
- 'channel' : channel,
- 'message' : message,
- 'callback' : publish_cb
+ 'channel': channel,
+ 'message': message,
+ 'callback': publish_cb
})
time.sleep(5)
pubnub.here_now({
- 'channel' : channel,
- 'callback' : here_now_cb
+ 'channel': channel,
+ 'callback': here_now_cb
})
-
def subscribe_cb(response):
- test(response == message , 'Here Now Test: Subscribe Receive Test in subscribe Callback')
+ test(response == message,
+ 'Here Now Test: Subscribe Receive Test in subscribe Callback')
pubnub.subscribe({
- 'channel' : channel,
- 'connect' : subscribe_connect_cb,
+ 'channel': channel,
+ 'connect': subscribe_connect_cb,
'callback': subscribe_cb
- })
+ })
expect = 7
test_publish()
@@ -140,7 +150,6 @@ test_subscribe()
test_here_now()
-
pubnub.start()
if failures > 0:
raise Exception('Fail', failures)