def LL_postMCA(): try: raw_data = request.data key = current_app.secret_key their_sig = request.args.get('s') our_sig = compute_signature(key, raw_data) ok = our_sig == their_sig if not ok: return jsonify({'ok': 'no'}) # EDIT ZONE BELOW ==== data = json.loads(raw_data) videoId = data['videoId'] mcaName = data['mcaName'] mcaType = data['mcaType'] mcaData = data['mcaData'] mongo = current_app.mongo mongo.db.mca.update({'_id': videoId}, {'$set': { 'mca-%s' % mcaName: { 'type': mcaType, 'data': mcaData } }}, True) mongo.db.interactionSessions.ensure_index('mca') return jsonify({'ok': 'ok'}) except ValueError, e: return jsonify({'error': e.message})
def LL_testKey(): try: data = json.loads(request.data) key = current_app.secret_key msg = data.get('msg','') their_sig = data.get('sig','') our_sig = compute_signature(key, msg) ok = our_sig == their_sig return jsonify({'ok': 'ok' if ok else 'no'}) except ValueError, e: return jsonify({'error': e.message})
def LL_postMCA(): try: raw_data = request.data key = current_app.secret_key their_sig = request.args.get('s') our_sig = compute_signature(key, raw_data) ok = our_sig == their_sig if not ok: return jsonify({'ok': 'no', 'their_sig': their_sig, 'our_sig': our_sig}) ################################################# data = json.loads(raw_data) videoId = data['videoId'] # string mcaName = data['mcaName'] # string delete = data.get('delete', False) == True mongo = current_app.mongo if not delete: mcaType = data['mcaType'] # "curve" | "point" mcaData = data['mcaData'] # double[] mcaWeight = data.get('mcaWeight', 1.0) mongo.db.mca.update({'_id': videoId}, {'$set': { 'mca-%s' % mcaName: { 'type': mcaType, 'data': mcaData, 'weight': mcaWeight } }}, True) mongo.db.interactionSessions.ensure_index('mca') else: mongo.db.mca.update({'_id': videoId}, {'$unset': { 'mca-%s' % mcaName: "" }}) return jsonify({'ok': 'ok'}) except ValueError, e: return jsonify({'error': e.message})
def LL_adminInteractions(): def jsonify2(x): return jsonify(x) if isinstance(x, dict) else Response(json.dumps(x, indent=2), mimetype='application/json') try: raw_data = request.data key = current_app.secret_key their_sig = request.args.get('s') our_sig = compute_signature(key, raw_data) ok = our_sig == their_sig if not ok: return jsonify({'ok': 'no', 'their_sig': their_sig, 'our_sig': our_sig}) ################################################# data = json.loads(raw_data) videoId = data['videoId'] # string cmd = data['cmd'].lower() # "download" | "upload" | "delete" interactionSessions = data.get('data') # json? mongo = current_app.mongo res = None if cmd == 'download': res = [] for interactionSession in mongo.db.interactionSessions.find({'videoId': videoId}): res.append(interactionSession) elif cmd == 'upload': dups = [] wrongid = [] for interactionSession in interactionSessions: _id = interactionSession['_id'] if interactionSession['videoId'] != videoId: wrongid.append(_id) continue try: mongo.db.interactionSessions.insert(interactionSession) except DuplicateKeyError: dups.append(_id) res = {'ok': 'ok'} if dups or wrongid: res['skipped'] = {} if dups: res['skipped']['duplicates'] = dups if wrongid: res['skipped']['wrong_videoid'] = wrongid elif cmd == 'delete': mongo.db.interactionSessions.remove({'videoId': videoId}) res = {'ok': 'ok'} return jsonify2(res) except ValueError, e: return jsonify({'error': e.message})