Exemplo n.º 1
0
def setup_app(app):
    mongoClient = __get_mongo_connection()

    db = mongoClient.event_scrape
    for key in ds_to_collection_names:
        entry = db[ds_to_collection_names[key]].find_one()
        fields = list(entry.keys())
        fields_map[key] = fields
        projection_map[key] = {}
        for field in fields:
            projection_map[key][field] = 1

    userInfo = db.event_users.find_one({"email": "*****@*****.**"})

    if userInfo is None:
        userInfo = {}
        userInfo["firstName"] = "Happy"
        userInfo["lastName"] = "Tester"
        userInfo["email"] = "*****@*****.**"
        userInfo["apiKey"] = "CD75737EF4CAC292EE17B85AAE4B6"

        db.event_users.insert(userInfo)

    print locate_user("test", db)


    print "Initialization Complete."
Exemplo n.º 2
0
def setup_app(app):
    mongoClient = __get_mongo_connection()

    db = mongoClient.event_scrape
    for key in ds_to_collection_names:
        entry = db[ds_to_collection_names[key]].find_one()
        fields = list(entry.keys())
        fields_map[key] = fields
        projection_map[key] = {}
        for field in fields:
            projection_map[key][field] = 1

    userInfo = db.event_users.find_one({"email": "*****@*****.**"})

    if userInfo is None:
        userInfo = {}
        userInfo["firstName"] = "Happy"
        userInfo["lastName"] = "Tester"
        userInfo["email"] = "*****@*****.**"
        userInfo["apiKey"] = "CD75737EF4CAC292EE17B85AAE4B6"

        db.event_users.insert(userInfo)

    print locate_user("test", db)


    print "Initialization Complete."
Exemplo n.º 3
0
def get_data():
    api_key_received = request.args.get('api_key')

    query = request.args.get('query')
    aggregate = request.args.get('aggregate')
    projection = request.args.get('select')
    unique = request.args.get('unique')
    group = request.args.get('group')
    dataset = request.args.get('datasource')
    print dataset

    try:
        if not __verify_access(api_key_received): raise ValueError("Invalid API key")

        if dataset is None:
            dataset = "phoenix_rt"

        assert(dataset in ds_to_collection_names)

        print("Dataset:    " + str(dataset))

        if query:
            query = json.loads(urllib.unquote_plus(query))
            print("Query:      " + str(query))

        if aggregate:
            aggregate = json.loads(urllib.unquote_plus(aggregate))
            print("Aggregate:  " + str(aggregate))


        # Grouping overrides aggregate
        if group:
            proj_dict = create_project_dict(group)
            group_dict = create_group_dict(group)

            # Sort by order of elements in group
            sort_dict = {}
            for field in group_dict.keys():
                sort_dict["_id." + field] = 1

            # Convert the query into an aggregation
            aggregate = [{'$match': query},
                         {'$project': proj_dict},
                         {'$group': {'_id': group_dict, 'total': {'$sum': 1}}},
                         {'$sort': sort_dict}]
            query = None

            print("Grouping:   " + str(aggregate))

        if projection: print("Projection: " + str(projection))
        if unique: print("Unique:     " + str(unique))

        response_data = get_result(
            dataset,
            query=query,
            aggregate=aggregate,
            projection=projection,
            unique=unique
        )

        mongo_client = __get_mongo_connection()
        db = mongo_client.event_scrape
        userInfo = locate_user(api_key_received, db)

        log_message = {}
        log_message["userID"] = userInfo.get("_id")
        log_message["query"] = request.query_string
        log_message["time"] = datetime.now()
        log_message["size"] = len(response_data)

        db.access_log.insert(log_message)
        mongo_client.close()

        resp = Response(response_data, mimetype='application/json')

    except:
        e = sys.exc_info()
        print(e)
        resp = Response('{"status": "error", "data":"' + str(e) + '"}', mimetype='application/json')

    resp.headers['Access-Control-Allow-Origin'] = '*'
    return resp
Exemplo n.º 4
0
def __verify_access(api_key_received):
    client = __get_mongo_connection()
    db  = client.event_scrape
    flag = locate_user(api_key_received, db) != None
    client.close()
    return flag
Exemplo n.º 5
0
def __verify_access(api_key_received):
    client = __get_mongo_connection()
    db  = client.event_scrape
    flag = locate_user(api_key_received, db) != None
    client.close()
    return flag
Exemplo n.º 6
0
        if projection: print("Projection: " + str(projection))
        if unique: print("Unique:     " + str(unique))

        response_data = get_result(
            dataset,
            query=query,
            aggregate=aggregate,
            projection=projection,
            unique=unique,
            limit = limit
        )

        mongo_client = __get_mongo_connection()
        db = mongo_client.event_scrape
        userInfo = locate_user(api_key_received, db)

        log_message = {}
        log_message["userID"] = userInfo.get("_id")
        log_message["query"] = request.query_string
        log_message["time"] = datetime.now()
        log_message["size"] = len(response_data)

        db.access_log.insert(log_message)
        mongo_client.close()
        if size_only:
            print len(response_data)
            response_data = json.dumps({"size": len(response_data)})
        resp = Response(response_data, mimetype='application/json')

    except:
def get_data():
    api_key_received = request.args.get('api_key')

    query = request.args.get('query')
    aggregate = request.args.get('aggregate')
    projection = request.args.get('select')
    unique = request.args.get('unique')
    group = request.args.get('group')
    dataset = request.args.get('datasource')
    print dataset

    try:
        if not __verify_access(api_key_received): raise ValueError("Invalid API key")

        if dataset is None:
            dataset = "phoenix_rt"

        assert(dataset in ds_to_collection_names)

        print("Dataset:    " + str(dataset))

        if query:
            query = json.loads(urllib.unquote_plus(query))
            print("Query:      " + str(query))

        if aggregate:
            aggregate = json.loads(urllib.unquote_plus(aggregate))
            print("Aggregate:  " + str(aggregate))


        # Grouping overrides aggregate
        if group:
            proj_dict = create_project_dict(group)
            group_dict = create_group_dict(group)

            # Sort by order of elements in group
            sort_dict = {}
            for field in group_dict.keys():
                sort_dict["_id." + field] = 1

            # Convert the query into an aggregation
            aggregate = [{'$match': query},
                         {'$project': proj_dict},
                         {'$group': {'_id': group_dict, 'total': {'$sum': 1}}},
                         {'$sort': sort_dict}]
            query = None

            print("Grouping:   " + str(aggregate))

        if projection: print("Projection: " + str(projection))
        if unique: print("Unique:     " + str(unique))

        response_data = get_result(
            dataset,
            query=query,
            aggregate=aggregate,
            projection=projection,
            unique=unique
        )

        mongo_client = __get_mongo_connection()
        db = mongo_client.event_scrape
        userInfo = locate_user(api_key_received, db)

        log_message = {}
        log_message["userID"] = userInfo.get("_id")
        log_message["query"] = request.query_string
        log_message["time"] = datetime.now()
        log_message["size"] = len(response_data)

        db.access_log.insert(log_message)
        mongo_client.close()

        resp = Response(response_data, mimetype='application/json')

    except:
        e = sys.exc_info()
        print(e)
        resp = Response('{"status": "error", "data":"' + str(e) + '"}', mimetype='application/json')

    resp.headers['Access-Control-Allow-Origin'] = '*'
    return resp