24
24
# Saved topic: default topic name to make keyboard input easier
25
25
SavedTopic = None
26
26
27
+ # In python 3 has input(), python 2 has raw_input. Make input() work in python 2.x.
28
+ try : input = raw_input
29
+ except NameError : pass
30
+
27
31
# Pack user's name and avatar into a vcard represented as json.
28
32
def make_vcard (fn , photofile ):
29
33
card = None
@@ -43,7 +47,7 @@ def make_vcard(fn, photofile):
43
47
# TODO: use mimetype.guess_type(ext) instead
44
48
card .photo .type = os .path .splitext (photofile )[1 ]
45
49
except IOError as err :
46
- print "Error opening '" + photofile + "'" , err
50
+ print ( "Error opening '" + photofile + "'" , err )
47
51
48
52
card = json .dumps (card )
49
53
@@ -95,7 +99,7 @@ def delMsg(id, topic, what, param, hard):
95
99
topic = param
96
100
param = None
97
101
98
- print id , topic , what , param , hard
102
+ print ( id , topic , what , param , hard )
99
103
enum_what = None
100
104
before = None
101
105
seq_list = None
@@ -106,7 +110,7 @@ def delMsg(id, topic, what, param, hard):
106
110
seq_list = [pb .DelQuery (range = pb .SeqRange (low = 1 , hi = 0x8FFFFFF ))]
107
111
elif param != None :
108
112
seq_list = [pb .DelQuery (seq_id = int (x .strip ())) for x in param .split (',' )]
109
- print seq_list
113
+ print ( seq_list )
110
114
111
115
elif what == 'sub' :
112
116
enum_what = pb .ClientDel .SUB
@@ -151,8 +155,8 @@ def parse_cmd(cmd):
151
155
parser = None
152
156
if parts [0 ] == "acc" :
153
157
parser = argparse .ArgumentParser (prog = parts [0 ], description = 'Create or alter an account' )
154
- parser .add_argument ('--user' , default = None , help = 'ID of the account to update' )
155
- parser .add_argument ('--scheme' , default = " basic" , help = 'authentication scheme, default=basic' )
158
+ parser .add_argument ('--user' , default = 'new' , help = 'ID of the account to update' )
159
+ parser .add_argument ('--scheme' , default = ' basic' , help = 'authentication scheme, default=basic' )
156
160
parser .add_argument ('--secret' , default = None , help = 'secret for authentication' )
157
161
parser .add_argument ('--uname' , default = None , help = 'user name for basic authentication' )
158
162
parser .add_argument ('--password' , default = None , help = 'password for basic authentication' )
@@ -165,7 +169,7 @@ def parse_cmd(cmd):
165
169
parser .add_argument ('--anon' , default = None , help = 'default access mode for anonymous users' )
166
170
elif parts [0 ] == "login" :
167
171
parser = argparse .ArgumentParser (prog = parts [0 ], description = 'Authenticate current session' )
168
- parser .add_argument ('--scheme' , default = " basic" )
172
+ parser .add_argument ('--scheme' , default = ' basic' )
169
173
parser .add_argument ('secret' , nargs = '?' , default = argparse .SUPPRESS )
170
174
parser .add_argument ('--secret' , dest = 'secret' , default = None )
171
175
parser .add_argument ('--uname' , default = None )
@@ -225,18 +229,18 @@ def parse_cmd(cmd):
225
229
help = 'notification type' )
226
230
parser .add_argument ('--seq' , help = 'value being reported' )
227
231
else :
228
- print "Unrecognized:" , parts [0 ]
229
- print "Possible commands:"
230
- print "\t acc\t - create account"
231
- print "\t login\t - authenticate"
232
- print "\t sub\t - subscribe to topic"
233
- print "\t leave\t - detach or unsubscribe from topic"
234
- print "\t pub\t - post message to topic"
235
- print "\t get\t - query topic for metadata or messages"
236
- print "\t set\t - update topic metadata"
237
- print "\t del\t - delete message(s), topic or subscription"
238
- print "\t note\t - send notification"
239
- print "\n \t Type <command> -h for help"
232
+ print ( "Unrecognized:" , parts [0 ])
233
+ print ( "Possible commands:" )
234
+ print ( "\t acc\t - create account" )
235
+ print ( "\t login\t - authenticate" )
236
+ print ( "\t sub\t - subscribe to topic" )
237
+ print ( "\t leave\t - detach or unsubscribe from topic" )
238
+ print ( "\t pub\t - post message to topic" )
239
+ print ( "\t get\t - query topic for metadata or messages" )
240
+ print ( "\t set\t - update topic metadata" )
241
+ print ( "\t del\t - delete message(s), topic or subscription" )
242
+ print ( "\t note\t - send notification" )
243
+ print ( "\n \t Type <command> -h for help" )
240
244
return None
241
245
242
246
try :
@@ -294,7 +298,7 @@ def gen_message(schema, secret):
294
298
295
299
while True :
296
300
id += 1
297
- inp = raw_input ("tn> " )
301
+ inp = input ("tn> " )
298
302
if inp == "" :
299
303
continue
300
304
if inp == "exit" or inp == "quit" :
@@ -319,17 +323,17 @@ def run(addr, schema, secret):
319
323
del onCompletion [msg .ctrl .id ]
320
324
if msg .ctrl .code >= 200 and msg .ctrl .code < 400 :
321
325
func (msg .ctrl .params )
322
- print str (msg .ctrl .code ) + " " + msg .ctrl .text
326
+ print ( str (msg .ctrl .code ) + " " + msg .ctrl .text )
323
327
elif msg .HasField ("data" ):
324
- print "\n From: " + msg .data .from_user_id + ":\n "
325
- print json .loads (msg .data .content ) + "\n "
328
+ print ( "\n From: " + msg .data .from_user_id + ":\n " )
329
+ print ( json .loads (msg .data .content ) + "\n " )
326
330
elif msg .HasField ("pres" ):
327
331
pass
328
332
else :
329
- print "Message type not handled" , msg
333
+ print ( "Message type not handled" , msg )
330
334
331
335
except grpc ._channel ._Rendezvous as err :
332
- print err
336
+ print ( err )
333
337
334
338
def read_cookie ():
335
339
try :
@@ -341,7 +345,7 @@ def read_cookie():
341
345
return params
342
346
343
347
except Exception as err :
344
- print "Missing or invalid cookie file '.tn-cli-cookie'" , err
348
+ print ( "Missing or invalid cookie file '.tn-cli-cookie'" , err )
345
349
return None
346
350
347
351
def save_cookie (params ):
@@ -353,32 +357,32 @@ def save_cookie(params):
353
357
for p in params :
354
358
nice [p ] = json .loads (params [p ])
355
359
356
- print "Authenticated as" , nice .get ('user' )
360
+ print ( "Authenticated as" , nice .get ('user' ) )
357
361
358
362
try :
359
363
cookie = open ('.tn-cookie' , 'w' )
360
364
json .dump (nice , cookie )
361
365
cookie .close ()
362
366
except Exception as err :
363
- print "Failed to save authentication cookie" , err
367
+ print ( "Failed to save authentication cookie" , err )
364
368
365
369
def print_server_params (params ):
366
- print "Connected to server:"
370
+ print ( "Connected to server:" )
367
371
for p in params :
368
- print "\t " + p + ": " + json .loads (params [p ])
372
+ print ( "\t " + p + ": " + json .loads (params [p ]) )
369
373
370
374
if __name__ == '__main__' :
371
375
"""Parse command-line arguments. Extract host name and authentication scheme, if one is provided"""
372
376
purpose = "Tinode command line client. Version " + VERSION + "."
373
- print purpose
377
+ print ( purpose )
374
378
parser = argparse .ArgumentParser (description = purpose )
375
379
parser .add_argument ('--host' , default = 'localhost:6061' , help = 'address of Tinode server' )
376
380
parser .add_argument ('--login-basic' , help = 'login using basic authentication username:password' )
377
381
parser .add_argument ('--login-token' , help = 'login using token authentication' )
378
382
parser .add_argument ('--login-cookie' , action = 'store_true' , help = 'read token from cookie file and use it for authentication' )
379
383
args = parser .parse_args ()
380
384
381
- print "Server '" + args .host + "'"
385
+ print ( "Server '" + args .host + "'" )
382
386
383
387
schema = None
384
388
secret = None
0 commit comments