mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2025-01-09 05:24:44 +01:00
add manual message-send to fcm_loop for testing
This commit is contained in:
parent
ef3de65355
commit
1a231455f0
1 changed files with 80 additions and 60 deletions
|
@ -6,7 +6,7 @@
|
||||||
#
|
#
|
||||||
# Depends on the gcm module
|
# Depends on the gcm module
|
||||||
|
|
||||||
import getpass, sys, psycopg2, time, signal, shelve, json, urllib2
|
import argparse, getpass, sys, psycopg2, time, signal, shelve, json, urllib2
|
||||||
from time import gmtime, strftime
|
from time import gmtime, strftime
|
||||||
from os import path
|
from os import path
|
||||||
from oauth2client.service_account import ServiceAccountCredentials
|
from oauth2client.service_account import ServiceAccountCredentials
|
||||||
|
@ -135,8 +135,7 @@ def asGCMIds(con, devids, typ):
|
||||||
if g_debug: print 'asGCMIds() =>', result
|
if g_debug: print 'asGCMIds() =>', result
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def notifyViaFCM( devids, typ, target ):
|
def notifyViaFCM(devids, typ, target):
|
||||||
global g_accessToken
|
|
||||||
success = False
|
success = False
|
||||||
if typ == DEVTYPE_FCM:
|
if typ == DEVTYPE_FCM:
|
||||||
if 'clntVers' in target and 3 <= target['clntVers'] and target['msg64']:
|
if 'clntVers' in target and 3 <= target['clntVers'] and target['msg64']:
|
||||||
|
@ -152,7 +151,15 @@ def notifyViaFCM( devids, typ, target ):
|
||||||
'data' : data,
|
'data' : data,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
params = json.dumps( values )
|
success = send(values)
|
||||||
|
else:
|
||||||
|
print "not sending to", len(devids), "devices because typ ==", typ
|
||||||
|
return success
|
||||||
|
|
||||||
|
def send(values):
|
||||||
|
global g_accessToken
|
||||||
|
success = False
|
||||||
|
params = json.dumps(values)
|
||||||
|
|
||||||
if g_skipSend:
|
if g_skipSend:
|
||||||
print
|
print
|
||||||
|
@ -181,9 +188,6 @@ def notifyViaFCM( devids, typ, target ):
|
||||||
g_accessToken = get_access_token()
|
g_accessToken = get_access_token()
|
||||||
else:
|
else:
|
||||||
break
|
break
|
||||||
|
|
||||||
else:
|
|
||||||
print "not sending to", len(devids), "devices because typ ==", typ
|
|
||||||
return success
|
return success
|
||||||
|
|
||||||
def shouldSend(val):
|
def shouldSend(val):
|
||||||
|
@ -238,39 +242,17 @@ def handleSigTERM( one, two ):
|
||||||
print 'handleSigTERM called: ', one, two
|
print 'handleSigTERM called: ', one, two
|
||||||
cleanup()
|
cleanup()
|
||||||
|
|
||||||
def usage():
|
def loop(args):
|
||||||
print "usage:", sys.argv[0], "[--loop <nSeconds>] [--type typ] [--verbose]"
|
|
||||||
sys.exit();
|
|
||||||
|
|
||||||
def main():
|
|
||||||
global g_con, g_sent, g_debug
|
global g_con, g_sent, g_debug
|
||||||
loopInterval = 0
|
|
||||||
g_con = init()
|
g_con = init()
|
||||||
emptyCount = 0
|
emptyCount = 0
|
||||||
typ = DEVTYPE_FCM
|
|
||||||
|
|
||||||
ii = 1
|
|
||||||
while ii < len(sys.argv):
|
|
||||||
arg = sys.argv[ii]
|
|
||||||
if arg == '--loop':
|
|
||||||
ii += 1
|
|
||||||
loopInterval = float(sys.argv[ii])
|
|
||||||
elif arg == '--type':
|
|
||||||
ii += 1
|
|
||||||
typ = int(sys.argv[ii])
|
|
||||||
elif arg == '--verbose':
|
|
||||||
g_debug = True
|
|
||||||
else:
|
|
||||||
usage()
|
|
||||||
ii = ii + 1
|
|
||||||
|
|
||||||
signal.signal( signal.SIGTERM, handleSigTERM )
|
signal.signal( signal.SIGTERM, handleSigTERM )
|
||||||
signal.signal( signal.SIGINT, handleSigTERM )
|
signal.signal( signal.SIGINT, handleSigTERM )
|
||||||
|
|
||||||
while g_con:
|
while g_con:
|
||||||
if g_debug: print
|
if g_debug: print
|
||||||
nSent = 0
|
nSent = 0
|
||||||
devids = getPendingMsgs( g_con, typ )
|
devids = getPendingMsgs( g_con, args.TYPE )
|
||||||
# print "got msgs:", len(devids)
|
# print "got msgs:", len(devids)
|
||||||
if 0 < len(devids):
|
if 0 < len(devids):
|
||||||
devids = addClntVers( g_con, devids )
|
devids = addClntVers( g_con, devids )
|
||||||
|
@ -284,7 +266,7 @@ def main():
|
||||||
toDelete = []
|
toDelete = []
|
||||||
for devid in targets.keys():
|
for devid in targets.keys():
|
||||||
for targetRow in targets[devid]:
|
for targetRow in targets[devid]:
|
||||||
if notifyViaFCM( asGCMIds(g_con, [devid], typ), typ, targetRow ) \
|
if notifyViaFCM( asGCMIds(g_con, [devid], args.TYPE), args.TYPE, targetRow ) \
|
||||||
and 3 <= targetRow['clntVers'] \
|
and 3 <= targetRow['clntVers'] \
|
||||||
and targetRow['msg64']:
|
and targetRow['msg64']:
|
||||||
toDelete.append( str(targetRow['id']) )
|
toDelete.append( str(targetRow['id']) )
|
||||||
|
@ -299,11 +281,49 @@ def main():
|
||||||
sys.stdout.write('.')
|
sys.stdout.write('.')
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
if 0 == (emptyCount % (LINE_LEN*5)): print ""
|
if 0 == (emptyCount % (LINE_LEN*5)): print ""
|
||||||
if 0 == loopInterval: break
|
if 0 == args.LOOP_SECONDS: break
|
||||||
time.sleep( loopInterval )
|
time.sleep( args.LOOP_SECONDS )
|
||||||
|
|
||||||
cleanup()
|
cleanup()
|
||||||
|
|
||||||
|
def sendMessage(args):
|
||||||
|
message = args.SEND_MSG
|
||||||
|
fcmid = args.FCMID
|
||||||
|
if not message:
|
||||||
|
print('--send-msg required')
|
||||||
|
elif not fcmid:
|
||||||
|
print('--fcmid required')
|
||||||
|
else:
|
||||||
|
data = {'msg': message, 'title' : 'needs title'}
|
||||||
|
values = {
|
||||||
|
'message' : {
|
||||||
|
'token' : fcmid,
|
||||||
|
'data' : data,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
success = send(values)
|
||||||
|
print( 'sendMessage({}): send() => {}'.format(message, success))
|
||||||
|
|
||||||
|
def mkParser():
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument('--send-msg', dest = 'SEND_MSG', type = str, default = None,
|
||||||
|
help = 'a message to send (then exit)')
|
||||||
|
parser.add_argument('--fcmid', dest = 'FCMID', type = str, default = None,
|
||||||
|
help = 'the FCMID of the device to send to (then exit)')
|
||||||
|
parser.add_argument('--loop', dest = 'LOOP_SECONDS', type = int, default = 5,
|
||||||
|
help = 'loop forever, checking the relay every <loop> seconds' )
|
||||||
|
parser.add_argument('--type', dest = 'TYPE', type = int, default = DEVTYPE_FCM,
|
||||||
|
help = 'type. Just use the default')
|
||||||
|
parser.add_argument('--verbose', dest = 'VERBOSE', action = 'store_true', default = False)
|
||||||
|
return parser
|
||||||
|
|
||||||
|
def main():
|
||||||
|
args = mkParser().parse_args()
|
||||||
|
global g_debug
|
||||||
|
g_debug = args.VERBOSE
|
||||||
|
if args.SEND_MSG or args.FCMID: sendMessage( args )
|
||||||
|
else: loop(args);
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|
Loading…
Reference in a new issue