def log():
@flask.after_this_request
def add_headers(response):
response.headers['Access-Control-Allow-Origin'] = '*'
return response
values = flask.request.values
tab_id = values.get('tab_id', '')
session = ndb.Key(Session, tab_id).get()
if session is None:
return 'No sessions with tab_id = %s' % tab_id, 404
elif session.shared:
return 'Cannot update previously shared session with tab_id = %s' % tab_id, 403
try:
user_id = Session.get_user_id(values['url'])
except:
return 'Incorrect user_id used', 400
if session.user_id != user_id:
return 'Session does not belong to %s' % user_id, 403
try:
if 'buffer' in values:
buffer = json.loads(values['buffer'])
else:
buffer = [flask.request.url.split('?', 1)[-1]]
actions = []
for log_str in buffer:
log_item = urlparse.parse_qs(log_str)
ts = Session.convert_time(log_item['time'][0])
event_type = log_item.get('ev', ['UNKNOWN'])[0]
fields = {k: v[0] for (k, v) in log_item.iteritems() if k not in ['ev', 'time']}
actions.append(Action(ts=ts, event_type=event_type, fields=fields))
session.actions += actions
session.put()
return 'Updated', 200
except Exception as e:
app.logger.error(e)
app.logger.error('Buffer: %s' % values.get('buffer', ''))
return 'Incorrect buffer contents', 400
评论列表
文章目录