Example #1
0
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})
Example #2
0
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})
Example #3
0
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})
Example #4
0
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})