Skip to content

Commit 963013f

Browse files
committed
🐛 Update HTTP error handling to use 'text' instead of 'reason' for consistent response formatting
1 parent 19441f1 commit 963013f

File tree

22 files changed

+81
-84
lines changed

22 files changed

+81
-84
lines changed

services/web/server/src/simcore_service_webserver/catalog/_catalog_rest_client_service.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def _handle_client_exceptions(app: web.Application) -> Iterator[ClientSession]:
3939

4040
except ClientResponseError as err:
4141
if err.status == status.HTTP_404_NOT_FOUND:
42-
raise web.HTTPNotFound(reason=MSG_CATALOG_SERVICE_NOT_FOUND)
42+
raise web.HTTPNotFound(text=MSG_CATALOG_SERVICE_NOT_FOUND) from err
4343
raise web.HTTPServiceUnavailable(
4444
reason=MSG_CATALOG_SERVICE_UNAVAILABLE
4545
) from err

services/web/server/src/simcore_service_webserver/login/_controller/rest/change.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ def _get_error_context(
216216
error_context=_get_error_context(user),
217217
)
218218
)
219-
raise web.HTTPServiceUnavailable(reason=MSG_CANT_SEND_MAIL) from err
219+
raise web.HTTPServiceUnavailable(text=MSG_CANT_SEND_MAIL) from err
220220

221221
# NOTE: Always same response: guideline #1
222222
return flash_response(MSG_EMAIL_SENT.format(email=request_body.email), "INFO")
@@ -241,7 +241,7 @@ async def initiate_change_email(request: web.Request):
241241

242242
async with pass_or_acquire_connection(get_asyncpg_engine(request.app)) as conn:
243243
if await UsersRepo.is_email_used(conn, email=request_body.email):
244-
raise web.HTTPUnprocessableEntity(reason="This email cannot be used")
244+
raise web.HTTPUnprocessableEntity(text="This email cannot be used")
245245

246246
# Reset if previously requested
247247
confirmation = await db.get_confirmation({"user": user, "action": CHANGE_EMAIL})
@@ -268,7 +268,7 @@ async def initiate_change_email(request: web.Request):
268268
except Exception as err: # pylint: disable=broad-except
269269
_logger.exception("Can not send change_email_email")
270270
await db.delete_confirmation(confirmation)
271-
raise web.HTTPServiceUnavailable(reason=MSG_CANT_SEND_MAIL) from err
271+
raise web.HTTPServiceUnavailable(text=MSG_CANT_SEND_MAIL) from err
272272

273273
return flash_response(MSG_CHANGE_EMAIL_REQUESTED)
274274

services/web/server/src/simcore_service_webserver/login/_controller/rest/registration.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ async def register(request: web.Request):
301301

302302
await db.delete_confirmation_and_user(user, _confirmation)
303303

304-
raise web.HTTPServiceUnavailable(reason=user_error_msg) from err
304+
raise web.HTTPServiceUnavailable(text=user_error_msg) from err
305305

306306
return flash_response(
307307
"You are registered successfully! To activate your account, please, "

services/web/server/src/simcore_service_webserver/projects/_controller/nodes_rest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ async def _stop_dynamic_service_task(
305305

306306
except (RPCServerError, ServiceWaitingForManualInterventionError) as exc:
307307
# in case there is an error reply as not found
308-
raise web.HTTPNotFound(reason=f"{exc}") from exc
308+
raise web.HTTPNotFound(text=f"{exc}") from exc
309309

310310
except ServiceWasNotFoundError:
311311
# in case the service is not found reply as all OK

services/web/server/src/simcore_service_webserver/projects/_controller/ports_rest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ async def update_project_inputs(request: web.Request) -> web.Response:
101101
for input_update in inputs_updates:
102102
node_id = input_update.key
103103
if node_id not in current_inputs:
104-
raise web.HTTPBadRequest(reason=f"Invalid input key [{node_id}]")
104+
raise web.HTTPBadRequest(text=f"Invalid input key [{node_id}]")
105105

106106
workbench[node_id].outputs = {KeyIDStr("out_1"): input_update.value}
107107
partial_workbench_data[node_id] = workbench[node_id].model_dump(

services/web/server/src/simcore_service_webserver/projects/_controller/projects_states_rest.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ async def open_project(request: web.Request) -> web.Response:
6363
client_session_id = await request.json()
6464

6565
except json.JSONDecodeError as exc:
66-
raise web.HTTPBadRequest(reason="Invalid request body") from exc
66+
raise web.HTTPBadRequest(text="Invalid request body") from exc
6767

6868
try:
6969
project_type: ProjectType = await _projects_service.get_project_type(
@@ -74,7 +74,7 @@ async def open_project(request: web.Request) -> web.Response:
7474
)
7575
if project_type is ProjectType.TEMPLATE and user_role < UserRole.USER:
7676
# only USERS/TESTERS can do that
77-
raise web.HTTPForbidden(reason="Wrong user role to open/edit a template")
77+
raise web.HTTPForbidden(text="Wrong user role to open/edit a template")
7878

7979
project = await _projects_service.get_project_for_user(
8080
request.app,
@@ -101,7 +101,7 @@ async def open_project(request: web.Request) -> web.Response:
101101
app=request.app,
102102
max_number_of_studies_per_user=product.max_open_studies_per_user,
103103
):
104-
raise HTTPLockedError(reason="Project is locked, try later")
104+
raise HTTPLockedError(text="Project is locked, try later")
105105

106106
# the project can be opened, let's update its product links
107107
await _projects_service.update_project_linked_product(
@@ -175,7 +175,7 @@ async def close_project(request: web.Request) -> web.Response:
175175
client_session_id = await request.json()
176176

177177
except json.JSONDecodeError as exc:
178-
raise web.HTTPBadRequest(reason="Invalid request body") from exc
178+
raise web.HTTPBadRequest(text="Invalid request body") from exc
179179

180180
# ensure the project exists
181181
await _projects_service.get_project_for_user(

services/web/server/src/simcore_service_webserver/projects/_controller/tags_rest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ async def add_project_tag(request: web.Request):
3232
request.match_info["project_uuid"],
3333
)
3434
except KeyError as err:
35-
raise web.HTTPBadRequest(reason=f"Invalid request parameter {err}") from err
35+
raise web.HTTPBadRequest(text=f"Invalid request parameter {err}") from err
3636

3737
project = await tags_api.add_tag(
3838
request.app,

services/web/server/src/simcore_service_webserver/projects/_crud_api_create.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -469,10 +469,10 @@ async def create_project( # pylint: disable=too-many-arguments,too-many-branche
469469
)
470470

471471
except JsonSchemaValidationError as exc:
472-
raise web.HTTPBadRequest(reason="Invalid project data") from exc
472+
raise web.HTTPBadRequest(text="Invalid project data") from exc
473473

474474
except ProjectNotFoundError as exc:
475-
raise web.HTTPNotFound(reason=f"Project {exc.project_uuid} not found") from exc
475+
raise web.HTTPNotFound(text=f"Project {exc.project_uuid} not found") from exc
476476

477477
except (ProjectInvalidRightsError, WorkspaceAccessForbiddenError) as exc:
478478
raise web.HTTPForbidden from exc
@@ -485,7 +485,7 @@ async def create_project( # pylint: disable=too-many-arguments,too-many-branche
485485
user_id=user_id,
486486
simcore_user_agent=simcore_user_agent,
487487
)
488-
raise web.HTTPNotFound(reason=f"{exc}") from exc
488+
raise web.HTTPNotFound(text=f"{exc}") from exc
489489

490490
except asyncio.CancelledError:
491491
log.warning(

services/web/server/src/simcore_service_webserver/resource_usage/_pricing_plans_admin_rest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ async def wrapper(request: web.Request) -> web.StreamResponse:
5858
return await handler(request)
5959

6060
except (ValueError, PricingUnitDuplicationError) as exc:
61-
raise web.HTTPBadRequest(reason=f"{exc}") from exc
61+
raise web.HTTPBadRequest(text=f"{exc}") from exc
6262

6363
except RPCServerError as exc:
6464
# NOTE: This will be improved; we will add a mapping between

services/web/server/src/simcore_service_webserver/resource_usage/_pricing_plans_rest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ async def wrapper(request: web.Request) -> web.StreamResponse:
3939
return await handler(request)
4040

4141
except WalletAccessForbiddenError as exc:
42-
raise web.HTTPForbidden(reason=f"{exc}") from exc
42+
raise web.HTTPForbidden(text=f"{exc}") from exc
4343

4444
return wrapper
4545

0 commit comments

Comments
 (0)