diff options
| author | bozo.kopic <bozo@kopic.xyz> | 2021-12-19 02:38:15 +0100 |
|---|---|---|
| committer | bozo.kopic <bozo@kopic.xyz> | 2021-12-19 02:38:15 +0100 |
| commit | b7883de47e05d0b52ea4e04440f4894a0a9032a1 (patch) | |
| tree | faee792c03a4bd456fb90588eee9ca24c88bee6c /src_py | |
| parent | 8e8a381c57298e1caa992373d1081a64d5924de6 (diff) | |
server error messages improvement
Diffstat (limited to 'src_py')
| -rw-r--r-- | src_py/opcut/server.py | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/src_py/opcut/server.py b/src_py/opcut/server.py index 6f9755f..92a4186 100644 --- a/src_py/opcut/server.py +++ b/src_py/opcut/server.py @@ -54,21 +54,35 @@ class Server(aio.Resource): raise aiohttp.web.HTTPFound('/index.html') async def _calculate_handler(self, request): - data = await request.json() - common.json_schema_repo.validate( - 'opcut://opcut.yaml#/definitions/params', data) + try: + data = await request.json() + common.json_schema_repo.validate( + 'opcut://opcut.yaml#/definitions/params', data) + + except Exception: + return aiohttp.web.Response(status=400, + text="Invalid request") method = common.Method(request.query['method']) params = common.params_from_json(data) - result = await self._executor(opcut.csp.calculate, params, method) + try: + result = await self._executor(opcut.csp.calculate, params, method) + return aiohttp.web.json_response(common.result_to_json(result)) - return aiohttp.web.json_response(common.result_to_json(result)) + except common.UnresolvableError: + return aiohttp.web.Response(status=400, + text='Result is not solvable') async def _generate_output_handler(self, request): - data = await request.json() - common.json_schema_repo.validate( - 'opcut://opcut.yaml#/definitions/result', data) + try: + data = await request.json() + common.json_schema_repo.validate( + 'opcut://opcut.yaml#/definitions/result', data) + + except Exception: + return aiohttp.web.Response(status=400, + text="Invalid request") output_type = common.OutputType(request.query['output_type']) panel = request.query.get('panel') |
