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."
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
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
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: