diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/3.2/Pubnub.py | 345 | ||||
| -rwxr-xr-x | python/3.2/publish-example.py | 14 | ||||
| -rwxr-xr-x | python/3.3/history-example.py | 12 | ||||
| -rwxr-xr-x | python/3.3/subscribe-example.py | 64 | ||||
| -rwxr-xr-x | python/3.3/unit-test.py | 77 | ||||
| -rw-r--r-- | python/Pubnub.py (renamed from python/3.3/Pubnub.py) | 0 | ||||
| -rwxr-xr-x | python/examples/detailed-history-unit-test.py (renamed from python/3.3/detailed-history-unit-test.py) | 0 | ||||
| -rw-r--r-- | python/examples/here-now-example.py (renamed from python/3.3/here-now-example.py) | 0 | ||||
| -rwxr-xr-x | python/examples/history-example.py (renamed from python/3.2/history-example.py) | 0 | ||||
| -rwxr-xr-x | python/examples/publish-example.py (renamed from python/3.3/publish-example.py) | 0 | ||||
| -rwxr-xr-x | python/examples/subscribe-example.py (renamed from python/3.2/subscribe-example.py) | 0 | ||||
| -rwxr-xr-x | python/tests/unit-test.py (renamed from python/3.2/unit-test.py) | 0 | 
12 files changed, 0 insertions, 512 deletions
| diff --git a/python/3.2/Pubnub.py b/python/3.2/Pubnub.py deleted file mode 100644 index 79086cf..0000000 --- a/python/3.2/Pubnub.py +++ /dev/null @@ -1,345 +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.0 Real-time Push Cloud API -## ----------------------------------- - -try: import json -except ImportError: import simplejson as json - -import time -import hashlib -import urllib2 -import uuid - -class Pubnub(): -    def __init__( -        self, -        publish_key, -        subscribe_key, -        secret_key = False, -        ssl_on = False, -        origin = 'pubsub.pubnub.com', -        pres_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.ssl           = ssl_on - -        if self.ssl : -            self.origin = 'https://' + self.origin -        else : -            self.origin = 'http://'  + self.origin -         -        self.uuid = pres_uuid or str(uuid.uuid4()) -         -        if not isinstance(self.uuid, basestring): -            raise AttributeError("pres_uuid must be a string") - -    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']) -        message = json.dumps(args['message'], separators=(',',':')) - -        ## 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' - -        ## Send Message -        return self._request([ -            'publish', -            self.publish_key, -            self.subscribe_key, -            signature, -            channel, -            '0', -            message -        ]) - - -    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(self._encode([ -                    'subscribe', -                    subscribe_key, -                    channel, -                    '0', -                    str(timetoken) -                ])+['?uuid='+self.uuid], encode=False) - -                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(message) : -                        return - -            except Exception: -                time.sleep(1) - -        return True -     -    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']) -         -        ## Fail if bad input. -        if not channel : -            raise Exception('Missing Channel') -            return False -         -        ## Get Presence Here Now -        return self._request([ -            'v2','presence', -            'sub_key', self.subscribe_key, -            'channel', channel -        ]); -         -         -    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 - -        ## Get History -        return self._request([ -            'history', -            self.subscribe_key, -            channel, -            '0', -            str(limit) -        ]); - - -    def time(self) : -        """ -        #** -        #* Time -        #* -        #* Timestamp from PubNub Cloud. -        #* -        #* @return int timestamp. -        #* - -        ## PubNub Server Time Example -        timestamp = pubnub.time() -        print(timestamp) - -        """ -        return self._request([ -            'time', -            '0' -        ])[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 _request( self, request, origin = None, encode = True ) : -        ## Build URL -        url = (origin or self.origin) + '/' + "/".join( -            encode and self._encode(request) or request -        ) - -        ## Send Request Expecting JSONP Response -        try: -            try: usock = urllib2.urlopen( url, None, 200 ) -            except TypeError: usock = urllib2.urlopen( url, None ) -            response = usock.read() -            usock.close() -            return json.loads( response ) -        except: -            return None - diff --git a/python/3.2/publish-example.py b/python/3.2/publish-example.py deleted file mode 100755 index 725df0b..0000000 --- a/python/3.2/publish-example.py +++ /dev/null @@ -1,14 +0,0 @@ -from Pubnub import Pubnub - -## Initiate Class -pubnub = Pubnub( 'demo', 'demo', None, False ) - -## Publish Example -info = pubnub.publish({ -    'channel' : 'hello_world', -    'message' : { -        'some_text' : 'Hello my World' -    } -}) -print(info) - diff --git a/python/3.3/history-example.py b/python/3.3/history-example.py deleted file mode 100755 index cedf69e..0000000 --- a/python/3.3/history-example.py +++ /dev/null @@ -1,12 +0,0 @@ -from Pubnub import Pubnub - -## Initiat Class -pubnub = Pubnub( 'demo', 'demo', None, False ) - -## History Example -history = pubnub.history({ -    'channel' : 'hello_world', -    'limit'   : 1 -}) -print(history) - diff --git a/python/3.3/subscribe-example.py b/python/3.3/subscribe-example.py deleted file mode 100755 index e458e2b..0000000 --- a/python/3.3/subscribe-example.py +++ /dev/null @@ -1,64 +0,0 @@ -import sys -import threading -import time -import random -import string -from Pubnub import Pubnub - -## Initiate Class -pubnub = Pubnub( 'demo', 'demo', None, False ) - -print("My UUID is: "+pubnub.uuid) - -channel = ''.join(random.choice(string.ascii_letters + string.digits) for x in range(20)) - -## Subscribe Example -def receive(message) : -    print(message) -    return False - -def pres_event(message): -    print(message) -    return False - -def subscribe(): -    print("Listening for messages on '%s' channel..." % channel) -    pubnub.subscribe({ -        'channel'  : channel, -        'callback' : receive  -    }) - -def presence(): -    print("Listening for presence events on '%s' channel..." % channel) -    pubnub.presence({ -        'channel'  : channel, -        'callback' : pres_event  -    }) - -def publish(): -    print("Publishing a test message on '%s' channel..." % channel) -    pubnub.publish({ -        'channel'  : channel, -        'message'  : { 'text':'foo bar' } -    }) - -pres_thread = threading.Thread(target=presence) -pres_thread.daemon=True -pres_thread.start() - -sub_thread = threading.Thread(target=subscribe) -sub_thread.daemon=True -sub_thread.start() - -time.sleep(3) - -publish() - - -print("waiting for subscribes and presence") -pres_thread.join() - -print pubnub.here_now({'channel':channel}) - -sub_thread.join() - diff --git a/python/3.3/unit-test.py b/python/3.3/unit-test.py deleted file mode 100755 index 88391a0..0000000 --- a/python/3.3/unit-test.py +++ /dev/null @@ -1,77 +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.0 Real-time Push Cloud API -## ----------------------------------- - -from Pubnub import Pubnub -import sys - -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 -ssl_on        = len(sys.argv) > 4 and bool(sys.argv[4]) or False - - -## ----------------------------------------------------------------------- -## Initiat Class -## ----------------------------------------------------------------------- - -pubnub = Pubnub( publish_key, subscribe_key, secret_key, ssl_on ) -crazy  = ' ~`!@#$%^&*(顶顅Ȓ)+=[]\\{}|;\':",./<>?abcd' - -## --------------------------------------------------------------------------- -## Unit Test Function -## --------------------------------------------------------------------------- -def test( trial, name ) : -    if trial : -        print( 'PASS: ' + name ) -    else : -        print( 'FAIL: ' + name ) - -## ----------------------------------------------------------------------- -## Publish Example -## ----------------------------------------------------------------------- -pubish_success = pubnub.publish({ -    'channel' : crazy, -    'message' : crazy -}) -test( pubish_success[0] == 1, 'Publish First Message Success' ) - -## ----------------------------------------------------------------------- -## History Example -## ----------------------------------------------------------------------- -history = pubnub.history({ -    'channel' : crazy, -    'limit'   : 1 -}) -test( -    history[0].encode('utf-8') == crazy, -    'History Message: ' + history[0] -) -test( len(history) == 1, 'History Message Count' ) - -## ----------------------------------------------------------------------- -## PubNub Server Time Example -## ----------------------------------------------------------------------- -timestamp = pubnub.time() -test( timestamp > 0, 'PubNub Server Time: ' + str(timestamp) ) - -## ----------------------------------------------------------------------- -## Subscribe Example -## ----------------------------------------------------------------------- -def receive(message) : -    print(message) -    return True - -pubnub.subscribe({ -    'channel'  : crazy, -    'callback' : receive  -}) - - diff --git a/python/3.3/Pubnub.py b/python/Pubnub.py index e806f9b..e806f9b 100644 --- a/python/3.3/Pubnub.py +++ b/python/Pubnub.py diff --git a/python/3.3/detailed-history-unit-test.py b/python/examples/detailed-history-unit-test.py index 2169e52..2169e52 100755 --- a/python/3.3/detailed-history-unit-test.py +++ b/python/examples/detailed-history-unit-test.py diff --git a/python/3.3/here-now-example.py b/python/examples/here-now-example.py index 261500a..261500a 100644 --- a/python/3.3/here-now-example.py +++ b/python/examples/here-now-example.py diff --git a/python/3.2/history-example.py b/python/examples/history-example.py index cedf69e..cedf69e 100755 --- a/python/3.2/history-example.py +++ b/python/examples/history-example.py diff --git a/python/3.3/publish-example.py b/python/examples/publish-example.py index c97034b..c97034b 100755 --- a/python/3.3/publish-example.py +++ b/python/examples/publish-example.py diff --git a/python/3.2/subscribe-example.py b/python/examples/subscribe-example.py index e458e2b..e458e2b 100755 --- a/python/3.2/subscribe-example.py +++ b/python/examples/subscribe-example.py diff --git a/python/3.2/unit-test.py b/python/tests/unit-test.py index 88391a0..88391a0 100755 --- a/python/3.2/unit-test.py +++ b/python/tests/unit-test.py | 
