From 77bf9537d08927f690546438e0df379d2aec046f Mon Sep 17 00:00:00 2001 From: Son NK <> Date: Wed, 28 Oct 2020 17:23:58 +0100 Subject: [PATCH] Add GET /api/setting --- README.md | 13 +++++++++++++ app/api/__init__.py | 1 + app/api/views/setting.py | 27 +++++++++++++++++++++++++++ tests/api/test_setting.py | 13 +++++++++++++ 4 files changed, 54 insertions(+) create mode 100644 app/api/views/setting.py create mode 100644 tests/api/test_setting.py diff --git a/README.md b/README.md index 3d7128d7..37ad4722 100644 --- a/README.md +++ b/README.md @@ -1381,6 +1381,19 @@ Input: Output: 200 if success +### Settings endpoints + +#### GET /api/setting + +Return user setting + +```json +{ + "alias_generator": "uuid", + "notification": true, + "random_alias_default_domain": "sl.local" +} +``` ### Misc endpoints #### POST /api/apple/process_payment diff --git a/app/api/__init__.py b/app/api/__init__.py index 44c541ed..a98f8182 100644 --- a/app/api/__init__.py +++ b/app/api/__init__.py @@ -9,4 +9,5 @@ from .views import ( apple, mailbox, notification, + setting, ) diff --git a/app/api/views/setting.py b/app/api/views/setting.py new file mode 100644 index 00000000..3598a6f5 --- /dev/null +++ b/app/api/views/setting.py @@ -0,0 +1,27 @@ +from flask import jsonify, g + +from app.api.base import api_bp, require_api_auth +from app.models import User, AliasGeneratorEnum + + +def setting_to_dict(user: User): + ret = { + "notification": user.notification, + "alias_generator": "word" + if user.alias_generator == AliasGeneratorEnum.word + else "uuid", + "random_alias_default_domain": user.default_random_alias_domain(), + } + + return ret + + +@api_bp.route("/setting") +@require_api_auth +def get_setting(): + """ + Return user setting + """ + user = g.user + + return jsonify(setting_to_dict(user)) diff --git a/tests/api/test_setting.py b/tests/api/test_setting.py new file mode 100644 index 00000000..befe81b6 --- /dev/null +++ b/tests/api/test_setting.py @@ -0,0 +1,13 @@ +from tests.utils import login + + +def test_get_setting(flask_client): + user = login(flask_client) + + r = flask_client.get("/api/setting") + assert r.status_code == 200 + assert r.json == { + "alias_generator": "uuid", + "notification": True, + "random_alias_default_domain": "sl.local", + }