summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLV-426 <lv-426@taproot.org.il>2014-12-06 21:24:13 +0200
committerLV-426 <lv-426@taproot.org.il>2014-12-06 21:24:13 +0200
commit79e4240cccf41de79be6bdd99aa9f0f4f68b04be (patch)
tree2f16ad0949663d491b8129943b4e8c6f0a549658
parentf103eae07ae8a61845899879445d4bfadbb0e10d (diff)
init_rest_api: dev_mode__resend_from_static() - see doc
-rw-r--r--src-py/rhizi_server.py27
1 files changed, 26 insertions, 1 deletions
diff --git a/src-py/rhizi_server.py b/src-py/rhizi_server.py
index 58d4ee68..d93d285e 100644
--- a/src-py/rhizi_server.py
+++ b/src-py/rhizi_server.py
@@ -127,7 +127,7 @@ class FlaskExt(Flask):
log.addHandler(log_handler_f)
return log
-def init_rest_api(flask_webapp):
+def init_rest_api(cfg, flask_webapp):
"""
map REST API calls
"""
@@ -135,6 +135,22 @@ def init_rest_api(flask_webapp):
def rest_entry(path, f, flask_args={'methods': ['POST']}):
return (path, f, flask_args)
+ def dev_mode__resend_from_static(static_url):
+ """
+ redirect broken-on-local-deploy links:
+ - /src -> '': handle root based files, eg. app.js
+ - /res, /lib -> res, lib
+ """
+ static_folder = flask.current_app.static_folder
+
+ static_path = request.path
+ if static_path.startswith('/src'):
+ # TODO: clean - /src/... links should not exist
+ static_path = static_path.replace('/src', '')
+ if static_path.startswith('/'): # convert to relative path
+ static_path = static_path[1:]
+ return send_from_directory(static_folder, static_path)
+
def login_decorator(f):
"""
[!] security boundary: asserd logged-in user before executing REST api call
@@ -163,6 +179,15 @@ def init_rest_api(flask_webapp):
rest_entry('/monitor/server-info', rhizi_api.monitor__server_info),
]
+ if cfg.development_mode:
+ dev_path_set = ['/src', '/res', '/lib']
+ rest_dev_entry_set = []
+ for dev_path in dev_path_set:
+ rest_dev_entry_set.append(rest_entry(dev_path + '/<path:static_url>',
+ dev_mode__resend_from_static,
+ {'methods': ['GET']}))
+ rest_entry_set += rest_dev_entry_set
+
for re_entry in rest_entry_set:
rest_path, f, flask_args = re_entry