コード例 #1
0
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
コード例 #2
0
ファイル: rest_account.py プロジェクト: HelperLine/backend
    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)
コード例 #3
0
ファイル: rest_filter.py プロジェクト: HelperLine/backend
    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"])
コード例 #4
0
ファイル: rest_filter.py プロジェクト: HelperLine/backend
    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)
コード例 #5
0
ファイル: rest_account.py プロジェクト: HelperLine/backend
    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"])
コード例 #6
0
ファイル: rest_account.py プロジェクト: HelperLine/backend
    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)
コード例 #7
0
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
コード例 #8
0
ファイル: rest_call.py プロジェクト: HelperLine/backend
    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)
コード例 #9
0
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
コード例 #10
0
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