summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/tools/wave/network/api/general_api_handler.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/tools/wave/network/api/general_api_handler.py')
-rw-r--r--testing/web-platform/tests/tools/wave/network/api/general_api_handler.py76
1 files changed, 76 insertions, 0 deletions
diff --git a/testing/web-platform/tests/tools/wave/network/api/general_api_handler.py b/testing/web-platform/tests/tools/wave/network/api/general_api_handler.py
new file mode 100644
index 0000000000..65883a9b75
--- /dev/null
+++ b/testing/web-platform/tests/tools/wave/network/api/general_api_handler.py
@@ -0,0 +1,76 @@
+# mypy: allow-untyped-defs
+
+from .api_handler import ApiHandler
+
+TOKEN_LENGTH = 36
+
+
+class GeneralApiHandler(ApiHandler):
+ def __init__(
+ self,
+ web_root,
+ read_sessions_enabled,
+ import_results_enabled,
+ reports_enabled,
+ version_string,
+ test_type_selection_enabled,
+ test_file_selection_enabled
+ ):
+ super().__init__(web_root)
+ self.read_sessions_enabled = read_sessions_enabled
+ self.import_results_enabled = import_results_enabled
+ self.reports_enabled = reports_enabled
+ self.version_string = version_string
+ self.test_type_selection_enabled = test_type_selection_enabled
+ self.test_file_selection_enabled = test_file_selection_enabled
+
+ def read_status(self):
+ try:
+ return {
+ "format": "application/json",
+ "data": {
+ "version_string": self.version_string,
+ "read_sessions_enabled": self.read_sessions_enabled,
+ "import_results_enabled": self.import_results_enabled,
+ "reports_enabled": self.reports_enabled,
+ "test_type_selection_enabled": self.test_type_selection_enabled,
+ "test_file_selection_enabled": self.test_file_selection_enabled
+ }
+ }
+ except Exception:
+ self.handle_exception("Failed to read server configuration")
+ return {"status": 500}
+
+ def handle_request(self, request, response):
+ method = request.method
+ uri_parts = self.parse_uri(request)
+
+ result = None
+ # /api/<function>
+ if len(uri_parts) == 2:
+ function = uri_parts[1]
+ if method == "GET":
+ if function == "status":
+ result = self.read_status()
+
+ if result is None:
+ response.status = 404
+ return
+
+ format = None
+ if "format" in result:
+ format = result["format"]
+ if format == "application/json":
+ data = None
+ if "data" in result:
+ data = result["data"]
+ status = 200
+ if "status" in result:
+ status = result["status"]
+ self.send_json(data, response, status)
+ return
+
+ status = 404
+ if "status" in result:
+ status = result["status"]
+ response.status = status