def route_authentication_logout(api_version, account_type): if api_version == "v1": params_dict = routing.get_params_dict(request) if account_type == "helper": authentication_result = tokening.check_helper_api_key(params_dict) if authentication_result["status"] != "ok": return formatting.postprocess_response(authentication_result) # Route will always return {"status": "ok"} return helper_logout(params_dict['email'], params_dict['api_key']), 200 elif account_type == "admin": authentication_result = tokening.check_admin_api_key(params_dict) if tokening.check_admin_api_key(params_dict)["status"] != "ok": return formatting.postprocess_response(authentication_result) # Route will always return {"status": "ok"} return admin_logout(params_dict['email'], params_dict['api_key']), 200 else: return formatting.status("account_type invalid"), 400 else: # Programming Error return formatting.status("api_version invalid"), 400
def post(self): # Create a new account params_dict = routing.get_params_dict(request, print_out=True) validation_result = validating.validate_create_account(params_dict) if validation_result["status"] != "ok": return formatting.postprocess_response(validation_result) result_dict = account_scripts.create_account(params_dict) return formatting.postprocess_response(result_dict)
def get(self): params_dict = routing.get_params_dict(request, print_out=True) authentication_result = tokening.check_helper_api_key( params_dict, new_api_key=(os.getenv("ENVIRONMENT") == "production")) if authentication_result["status"] != "ok": return formatting.postprocess_response(authentication_result) result_dict = filter_scripts.get_filter(params_dict['email']) return formatting.postprocess_response( result_dict, new_api_key=authentication_result["api_key"])
def put(self): params_dict = routing.get_params_dict(request, print_out=True) authentication_result = tokening.check_helper_api_key(params_dict) if authentication_result["status"] != "ok": return formatting.postprocess_response(authentication_result) validation_result = validating.validate_edit_filter(params_dict) if validation_result["status"] != "ok": return formatting.postprocess_response(validation_result) result_dict = filter_scripts.modify_filter(params_dict) return formatting.postprocess_response(result_dict)
def get(self): # Get all infos for a specific account params_dict = routing.get_params_dict(request) authentication_result = tokening.check_helper_api_key( params_dict, new_api_key=(os.getenv("ENVIRONMENT") == "production")) if authentication_result["status"] != "ok": return formatting.postprocess_response(authentication_result) result_dict = account_scripts.get_account(params_dict['email']) return formatting.postprocess_response( result_dict, new_api_key=authentication_result["api_key"])
def put(self): # Modify an existing account params_dict = routing.get_params_dict(request) authentication_result = tokening.check_helper_api_key(params_dict) if authentication_result["status"] != "ok": return formatting.postprocess_response(authentication_result) validation_result = validating.validate_edit_account(params_dict) if validation_result["status"] != "ok": return formatting.postprocess_response(validation_result) result_dict = account_scripts.modify_account(params_dict) return formatting.postprocess_response(result_dict)
def route_helper_phone_trigger(api_version): if api_version == "v1": params_dict = routing.get_params_dict(request) authentication_result = tokening.check_helper_api_key(params_dict) if authentication_result["status"] != "ok": return formatting.postprocess_response(authentication_result) result_dict = phone_verification.trigger(params_dict['email']) return formatting.postprocess_response(result_dict) else: # Programming Error return formatting.status("api_version invalid"), 400
def put(self): # Modify an accepted call (reject, fulfill, comment) params_dict = routing.get_params_dict(request, print_out=True) authentication_result = tokening.check_helper_api_key(params_dict) if authentication_result["status"] != "ok": return formatting.postprocess_response(authentication_result) validation_result = validating.validate_edit_call(params_dict) if validation_result["status"] != "ok": return formatting.postprocess_response(validation_result) result_dict = call_scripts.modify_call(params_dict) return formatting.postprocess_response(result_dict)
def route_authentication_login(api_version, account_type): if api_version == "v1": params_dict = routing.get_params_dict(request) # Artificial delay to further prevent brute forcing time.sleep(0.05) email = params_dict['email'] password = params_dict['password'] api_key = params_dict['api_key'] if account_type == "helper": # Initial login if email is not None and password is not None: login_result = helper_login_password(email, password) return formatting.postprocess_response(login_result) # Automatic re-login from webapp elif email is not None and api_key is not None: login_result = helper_login_api_key(email, api_key) return formatting.postprocess_response(login_result) elif account_type == "admin": # initial login if email is not None and password is not None: login_result = admin_login_password(email, password) return formatting.postprocess_response(login_result) # automatic re-login from webapp elif email is not None and api_key is not None: login_result = admin_login_api_key(email, api_key) return formatting.postprocess_response(login_result) else: return formatting.status("account_type invalid"), 400 return formatting.status('email/password/api_key missing'), 400 else: # Programming Error return formatting.status("api_version invalid"), 400
def route_database_fetchall(api_version): if api_version == "v1": params_dict = routing.get_params_dict(request) authentication_result = tokening.check_helper_api_key( params_dict, new_api_key=(os.getenv("ENVIRONMENT") == "production")) if authentication_result["status"] != "ok": return formatting.postprocess_response(authentication_result) account_dict = account_scripts.get_account(params_dict['email']) calls_dict = call_scripts.get_calls(params_dict['email']) filter_dict = filter_scripts.get_filter(params_dict['email']) forward_dict = forward_scripts.get_forward(params_dict['email']) for result_dict in [ account_dict, calls_dict, filter_dict, forward_dict ]: if result_dict["status"] != "ok": return formatting.postprocess_response(result_dict) performance_dict = performance_scripts.get_performance( account_dict["account"]["zip_code"]) result_dict = formatting.status( "ok", account=account_dict["account"], calls=calls_dict["calls"], filter=filter_dict["filter"], forward=forward_dict["forward"], performance=performance_dict["performance"]) return formatting.postprocess_response( result_dict, new_api_key=authentication_result['api_key']) else: return formatting.status("api_version invalid"), 400