예제 #1
0
파일: api.py 프로젝트: nyddle/snitch-django
def post():
    """
    Required: token, message
    Optional args: app, type, emails
    """
    # todo: move default project/event to settings

    if request.json is None or not 'token' in request.json \
            or not 'message' in request.json:
        return jsonify({'result': False, 'reason': 'wrong request'})
    db_manager = SqlrMongoManager(host=current_app.config['MONGO_HOST'],
                                  port=current_app.config['MONGO_PORT'],
                                  db=current_app.config['DB'])
    user = db_manager.validate_token(request.json['token'])
    if not user:
        return jsonify({'result': False, 'reason': 'Wrong token'})

    params = {}
    if 'app' in request.json:
        params['app'] = request.json['app']

    if 'type' in request.json:
        params['etype'] = request.json['type']

    if 'emails' in request.json:
        params['usernames'] = request.json['emails'] \
            if isinstance(request.json['emails'], list) \
            else [request.json['emails']]
        if not user['email'] in params['usernames']:
            params['usernames'].append(user['email'])
    else:
        params['usernames'] = [user['email']]

    event = db_manager.create_event(request.json['token'], request.json['message'], **params)
    if event:
        return jsonify({'result': True})
    return jsonify({'result': False, 'reason': 'Something wrong'})
예제 #2
0
파일: api.py 프로젝트: nyddle/snitch-django
def get():
    """
    JSON params:
    Required:
    token - string
    Optional:
    app - str or list
    date_interval - list with to elems. 0 is min, 1 is max. If you don't need
    max - set it to 0;
    type - string.

    Response:
    result: bool;
    reason: string(returned if result is False;
    events: list; returned if result is True;
    """
    db_manager = SqlrMongoManager(host=current_app.config['MONGO_HOST'],
                                  port=current_app.config['MONGO_PORT'],
                                  db=current_app.config['DB'])
    user = db_manager.validate_token(request.json['token'])
    if not user:
        return jsonify({'result': False, 'reason': 'Wrong token'})

    params = {'app': ['app:default'] if not 'app' in request.json
              else request.json['app']
              if isinstance(request.json['app'], list)
              else [request.json['app']],

              'date_interval': tuple(request.json['date_interval'])
              if 'date_interval' in request.json
              and isinstance(request.json['data_interval'], list) else (),
              'etype': request.json['type'] if 'type' in request.json else None
              }
    # todo: return id
    events = db_manager.get_events(request.json['token'], **params)
    events = list(events)
    return jsonify({'result': True, 'events': events})