From 6850a389dfcbb474cda5f3301a974c71e28044aa Mon Sep 17 00:00:00 2001 From: Frederick Brock Date: Thu, 3 Dec 2015 11:21:16 -0800 Subject: [PATCH 1/3] protocol --- .pubnub.py.swp | Bin 0 -> 16384 bytes pubnub.py | 7 ++++++- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .pubnub.py.swp diff --git a/.pubnub.py.swp b/.pubnub.py.swp new file mode 100644 index 0000000000000000000000000000000000000000..1e104aeec25e5197a30eaaed4b5909de608870d8 GIT binary patch literal 16384 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 Date: Mon, 7 Dec 2015 14:54:54 -0800 Subject: [PATCH 2/3] adding pn_protocol to the stack --- .pubnub.py.swp | Bin 16384 -> 0 bytes pubnub.py | 12 ++++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) delete mode 100644 .pubnub.py.swp diff --git a/.pubnub.py.swp b/.pubnub.py.swp deleted file mode 100644 index 1e104aeec25e5197a30eaaed4b5909de608870d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 Date: Fri, 18 Dec 2015 19:48:16 -0800 Subject: [PATCH 3/3] updarted examples and fixed bad conditional --- pubnub.py | 7 ++- python-twisted/examples/twisted-example.py | 61 ++++++++++++++++++++++ 2 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 python-twisted/examples/twisted-example.py diff --git a/pubnub.py b/pubnub.py index 321dfe68..fdc83347 100644 --- a/pubnub.py +++ b/pubnub.py @@ -2685,7 +2685,6 @@ def _request(self, request, callback=None, error=None, single=False, # Pubnub Twisted -class Pubnub class PubnubTwisted(PubnubCoreAsync): @@ -2735,7 +2734,7 @@ def __init__( self.headers['User-Agent'] = ['Python-Twisted'] self.headers['V'] = [self.version] self.pnsdk = 'PubNub-Python-' + 'Twisted' + '/' + self.version - self.pn_protocol = protocol_factory + self.pn_protocol = pn_protocol if pn_protocol is None: pn_protocol = PubNubResponse @@ -2776,9 +2775,9 @@ def received(response): return finished = Deferred() - if response.code in [401, 403]: + if (response.code in [401, 403]) or ( pn_protocol is None): response.deliverBody(PubNubPamResponse(finished)) - else + else: response.deliverBody(pn_protocol(finished)) return finished diff --git a/python-twisted/examples/twisted-example.py b/python-twisted/examples/twisted-example.py new file mode 100644 index 00000000..d42998eb --- /dev/null +++ b/python-twisted/examples/twisted-example.py @@ -0,0 +1,61 @@ +## 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/ + + +import sys +from twisted.internet.protocol import Protocol +from pubnub import PubnubTwisted as Pubnub + +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 'demo' +cipher_key = len(sys.argv) > 4 and sys.argv[4] or '' +ssl_on = len(sys.argv) > 5 and bool(sys.argv[5]) or False + + +class CustomReponse(Protocol): + def __init__(self, finished): + self.finished = finished + + def dataReceived(self, bytes): + print "in data received" + self.finished.callback(bytes) + +## ----------------------------------------------------------------------- +## Initiate Pubnub State +## ----------------------------------------------------------------------- +pubnub = Pubnub(publish_key=publish_key, subscribe_key=subscribe_key, + secret_key=secret_key, cipher_key=cipher_key, ssl_on=ssl_on, pn_protocol=CustomReponse) + +channel = 'a' + + +# Asynchronous usage +def callback(message, channel): + print(message) + + +def error(message): + print("ERROR : " + str(message)) + + +def connect(message): + print("CONNECTED") + + +def reconnect(message): + print("RECONNECTED") + + +def disconnect(message): + print("DISCONNECTED") + + +pubnub.subscribe(channel, callback=callback, error=callback, + connect=connect, reconnect=reconnect, disconnect=disconnect) + +pubnub.start()