多租户更改
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
"""Global objects for Tinode command line client."""
|
||||
# To make print() compatible between p2 and p3
|
||||
from __future__ import print_function
|
||||
|
||||
import json
|
||||
import sys
|
||||
from collections import deque
|
||||
from google.protobuf.json_format import MessageToDict
|
||||
try:
|
||||
import Queue as queue
|
||||
except ImportError:
|
||||
import queue
|
||||
|
||||
if sys.version_info[0] >= 3:
|
||||
# for compatibility with python2
|
||||
unicode = str
|
||||
|
||||
# Dictionary wich contains lambdas to be executed when server {ctrl} response is received.
|
||||
OnCompletion = {}
|
||||
|
||||
# Outstanding request for a synchronous message.
|
||||
WaitingFor = None
|
||||
|
||||
# Last obtained authentication token
|
||||
AuthToken = ''
|
||||
|
||||
# IO queues and a thread for asynchronous input/output
|
||||
#InputQueue = queue.Queue()
|
||||
InputQueue = deque()
|
||||
OutputQueue = queue.Queue()
|
||||
InputThread = None
|
||||
|
||||
# Detect if the tn-cli is running interactively or being piped.
|
||||
IsInteractive = sys.stdin.isatty()
|
||||
Prompt = None
|
||||
|
||||
# Default values for user and topic
|
||||
DefaultUser = None
|
||||
DefaultTopic = None
|
||||
|
||||
# Variables: results of command execution
|
||||
Variables = {}
|
||||
|
||||
# Connection to the server
|
||||
Connection = None
|
||||
|
||||
# Flag to enable extended logging. Useful for debugging.
|
||||
Verbose = False
|
||||
|
||||
# Print prompts in interactive mode only.
|
||||
def printout(*args):
|
||||
if IsInteractive:
|
||||
print(*args)
|
||||
|
||||
def printerr(*args):
|
||||
text = ""
|
||||
for a in args:
|
||||
text = text + str(a) + " "
|
||||
# Strip just the spaces here, don't strip the newline or tabs.
|
||||
text = text.strip(" ")
|
||||
if text:
|
||||
sys.stderr.write(text + "\n")
|
||||
|
||||
# Support for asynchronous input-output to/from stdin/stdout
|
||||
|
||||
# Stdout asynchronously writes to sys.stdout
|
||||
def stdout(*args):
|
||||
text = ""
|
||||
for a in args:
|
||||
text = text + str(a) + " "
|
||||
# Strip just the spaces here, don't strip the newline or tabs.
|
||||
text = text.strip(" ")
|
||||
if text:
|
||||
OutputQueue.put(text)
|
||||
|
||||
# Stdoutln asynchronously writes to sys.stdout and adds a new line to input.
|
||||
def stdoutln(*args):
|
||||
args = args + ("\n",)
|
||||
stdout(*args)
|
||||
|
||||
# Shorten long strings for logging.
|
||||
def clip_long_string(obj):
|
||||
if isinstance(obj, str) or isinstance(obj, unicode):
|
||||
if len(obj) > 64:
|
||||
return '<' + str(len(obj)) + ' bytes: ' + obj[:12] + '...' + obj[-12:] + '>'
|
||||
return obj
|
||||
elif isinstance(obj, (list, tuple)):
|
||||
return [clip_long_string(item) for item in obj]
|
||||
elif isinstance(obj, dict):
|
||||
return dict((key, clip_long_string(val)) for key, val in obj.items())
|
||||
else:
|
||||
return obj
|
||||
|
||||
# Convert protobuff message to json. Shorten very long strings.
|
||||
def to_json(msg):
|
||||
if not msg:
|
||||
return 'null'
|
||||
try:
|
||||
return json.dumps(clip_long_string(MessageToDict(msg)))
|
||||
except Exception as err:
|
||||
stdoutln("Exception: {}".format(err))
|
||||
|
||||
return 'exception'
|
||||
|
||||
Reference in New Issue
Block a user