aboutsummaryrefslogtreecommitdiffstats
path: root/python/examples/dev-console.py
diff options
context:
space:
mode:
authorDevendra2014-06-18 01:02:15 +0530
committerDevendra2014-06-18 01:02:15 +0530
commita1ee7f8bd90b463318bfa75f7ee4f58d458d2a24 (patch)
tree9e260902f960f792a93fa25e3b619c42ecb5f4d4 /python/examples/dev-console.py
parentbfd5c64bdf7ed45f21207cb53c653e7220e39eff (diff)
parent083127cde127dd78fc88ffe2b3b82144b2c07038 (diff)
downloadpubnub-python-a1ee7f8bd90b463318bfa75f7ee4f58d458d2a24.tar.bz2
Merge branch 'master' into develop
Diffstat (limited to 'python/examples/dev-console.py')
-rwxr-xr-xpython/examples/dev-console.py278
1 files changed, 278 insertions, 0 deletions
diff --git a/python/examples/dev-console.py b/python/examples/dev-console.py
new file mode 100755
index 0000000..134d2e7
--- /dev/null
+++ b/python/examples/dev-console.py
@@ -0,0 +1,278 @@
+## 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 Pubnub import Pubnub
+
+from optparse import OptionParser
+
+
+parser = OptionParser()
+
+parser.add_option("--publish-key",
+ dest="publish_key", default="demo",
+ help="Publish Key ( default : 'demo' )")
+
+parser.add_option("--subscribe-key",
+ dest="subscribe_key", default="demo",
+ help="Subscribe Key ( default : 'demo' )")
+
+parser.add_option("--secret-key",
+ dest="secret_key", default="demo",
+ help="Secret Key ( default : 'demo' )")
+
+parser.add_option("--cipher-key",
+ dest="cipher_key", default="",
+ help="Cipher Key")
+
+parser.add_option("--auth-key",
+ dest="auth_key", default=None,
+ help="Auth Key")
+
+parser.add_option("--origin",
+ dest="origin", default="pubsub.pubnub.com",
+ help="Origin ( default: pubsub.pubnub.com )")
+
+parser.add_option("--ssl-on",
+ action="store_false", dest="ssl", default=False,
+ help="SSL")
+
+parser.add_option("--uuid",
+ dest="uuid", default=None,
+ help="UUID")
+
+(options, args) = parser.parse_args()
+
+print(options)
+
+pubnub = Pubnub(options.publish_key,
+ options.subscribe_key,
+ options.secret_key,
+ options.cipher_key,
+ options.auth_key,
+ options.ssl,
+ options.origin,
+ options.uuid)
+
+
+class color(object):
+ PURPLE = '\033[95m'
+ CYAN = '\033[96m'
+ DARKCYAN = '\033[36m'
+ BLUE = '\033[94m'
+ GREEN = '\033[92m'
+ YELLOW = '\033[93m'
+ RED = '\033[91m'
+ BOLD = '\033[1m'
+ UNDERLINE = '\033[4m'
+ END = '\033[0m'
+
+from datetime import datetime
+
+
+def print_ok(msg, channel=None):
+ chstr = color.PURPLE + "[" + datetime.now().strftime(
+ '%Y-%m-%d %H:%M:%S') + "] " + color.END
+ chstr += color.CYAN + "[Channel : " + channel + \
+ "] " if channel is not None else "" + color.END
+ try:
+ print(chstr + color.GREEN + str(msg) + color.END)
+ except UnicodeEncodeError as e:
+ print(msg)
+
+
+def print_error(msg, channel=None):
+ chstr = color.PURPLE + "[" + datetime.now().strftime(
+ '%Y-%m-%d %H:%M:%S') + "] " + color.END
+ chstr += color.CYAN + "[Channel : " + channel + \
+ "] " if channel is not None else "" + color.END
+ try:
+ print(chstr + color.RED + color.BOLD + str(msg) + color.END)
+ except UnicodeEncodeError as e:
+ print(msg)
+
+import threading
+
+
+def kill_all_threads():
+ for thread in threading.enumerate():
+ if thread.isAlive():
+ thread._Thread__stop()
+
+
+def get_input(message, t=None):
+ while True:
+ try:
+ try:
+ command = raw_input(message)
+ except NameError:
+ command = input(message)
+ except KeyboardInterrupt:
+ return None
+
+ command = command.strip()
+
+ if command is None or len(command) == 0:
+ raise ValueError
+
+ if t is not None and t == bool:
+ valid = ["True", "true", "1", 1, "y", "Y", "yes", "Yes", "YES"]
+ if command in valid:
+ return True
+ else:
+ return False
+ if t is not None:
+ command = t(command)
+ else:
+ command = eval("'" + command + "'")
+
+ return command
+ except ValueError:
+ print_error("Invalid input : " + command)
+
+
+def _publish_command_handler():
+
+ channel = get_input("[PUBLISH] Enter Channel Name ", str)
+ if channel is None:
+ return
+ while True:
+ message = get_input("[PUBLISH] Enter Message \
+ ( QUIT or CTRL-C for exit from publish mode ) ")
+ if message == 'QUIT' or message == 'quit' or message is None:
+ return
+
+ def _callback(r):
+ print_ok(r)
+
+ def _error(r):
+ print_error(r)
+ pubnub.publish(channel, message, _callback, _error)
+
+
+def _subscribe_command_handler():
+ channel = get_input("[SUBSCRIBE] Enter Channel Name ", str)
+
+ def _callback(r):
+ print_ok(r, channel)
+
+ def _error(r):
+ print_error(r, channel)
+ pubnub.subscribe(channel, _callback, _error)
+
+
+def _unsubscribe_command_handler():
+ channel = get_input("[UNSUBSCRIBE] Enter Channel Name ", str)
+
+ def _callback(r):
+ print_ok(r)
+
+ def _error(r):
+ print_error(r)
+ pubnub.unsubscribe(channel)
+
+
+def _grant_command_handler():
+ def _callback(r):
+ print_ok(r)
+
+ def _error(r):
+ print_error(r)
+ channel = get_input("[GRANT] Enter Channel Name ", str)
+ auth_key = get_input("[GRANT] Enter Auth Key ", str)
+ ttl = get_input("[GRANT] Enter ttl ", int)
+ read = get_input("[GRANT] Read ? ", bool)
+ write = get_input("[GRANT] Write ? ", bool)
+ pubnub.grant(channel, auth_key, read, write, ttl, _callback)
+
+
+def _revoke_command_handler():
+ def _callback(r):
+ print_ok(r)
+
+ def _error(r):
+ print_error(r)
+ channel = get_input("[REVOKE] Enter Channel Name ", str)
+ auth_key = get_input("[REVOKE] Enter Auth Key ", str)
+ ttl = get_input("[REVOKE] Enter ttl ", int)
+
+ pubnub.revoke(channel, auth_key, ttl, _callback)
+
+
+def _audit_command_handler():
+ def _callback(r):
+ print_ok(r)
+
+ def _error(r):
+ print_error(r)
+ channel = get_input("[AUDIT] Enter Channel Name ", str)
+ auth_key = get_input("[AUDIT] Enter Auth Key ", str)
+ pubnub.audit(channel, auth_key, _callback)
+
+
+def _history_command_handler():
+ def _callback(r):
+ print_ok(r)
+
+ def _error(r):
+ print_error(r)
+ channel = get_input("[HISTORY] Enter Channel Name ", str)
+ count = get_input("[HISTORY] Enter Count ", int)
+
+ pubnub.history(channel, count, callback=_callback, error=_error)
+
+
+def _here_now_command_handler():
+ def _callback(r):
+ print_ok(r)
+
+ def _error(r):
+ print_error(r)
+ channel = get_input("[HERE NOW] Enter Channel Name ", str)
+
+ pubnub.here_now(channel, callback=_callback, error=_error)
+
+
+commands = []
+commands.append({"command": "publish", "handler": _publish_command_handler})
+commands.append(
+ {"command": "subscribe", "handler": _subscribe_command_handler})
+commands.append(
+ {"command": "unsubscribe", "handler": _unsubscribe_command_handler})
+commands.append(
+ {"command": "here_now", "handler": _here_now_command_handler})
+commands.append({"command": "history", "handler": _history_command_handler})
+commands.append({"command": "grant", "handler": _grant_command_handler})
+commands.append({"command": "revoke", "handler": _revoke_command_handler})
+commands.append({"command": "audit", "handler": _audit_command_handler})
+
+# last command is quit. add new commands before this line
+commands.append({"command": "QUIT"})
+
+
+def get_help():
+ help = ""
+ help += "Channels currently subscribed to : "
+ help += str(pubnub.get_channel_array())
+ help += "\n"
+ for i, v in enumerate(commands):
+ help += "Enter " + str(i) + " for " + v['command'] + "\n"
+ return help
+
+
+while True:
+ command = get_input(color.BLUE + get_help(), int)
+ if command == len(commands) - 1 or command is None:
+ kill_all_threads()
+ break
+ if command >= len(commands):
+ print_error("Invalid input " + str(command))
+ continue
+
+ commands[command]['handler']()
+
+#pubnub.start()