Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 1 addition & 8 deletions src/ogd/apis/models/APIResponse.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,7 @@ def FromRequestResult(result:RequestResult.RequestResult, req_type:RESTType) ->
:return: An `APIResponse` corresponding to the result of the export request
:rtype: APIResponse
"""
_status : ResponseStatus
match result.Status:
case RequestResult.ResultStatus.SUCCESS:
_status = ResponseStatus.OK
case RequestResult.ResultStatus.FAILURE:
_status = ResponseStatus.BAD_REQUEST
case _:
_status = ResponseStatus.INTERNAL_ERR
_status = ResponseStatus.FromOGDResult(result.Status)
ret_val = APIResponse(req_type=req_type, val={"session_count":result.SessionCount, "duration":str(result.Duration)}, msg=result.Message, status=_status)
return ret_val

Expand Down
37 changes: 35 additions & 2 deletions src/ogd/apis/models/enums/ResponseStatus.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
from enum import IntEnum
from typing import Set

import ogd.core.requests.RequestResult as RequestResult

class ResponseStatus(IntEnum):
"""Enumerated type to track the status of an API request result.
"""
Expand Down Expand Up @@ -48,7 +50,7 @@ class ResponseStatus(IntEnum):
GONE = 410
LENGTH_REQUIRED = 411
PRECONDITION_FAILED = 412
CONENT_TOO_LARGE = 413
CONTENT_TOO_LARGE = 413
URI_TOO_LONG = 414
UNSUPPORTED_MEDIA = 415
RANGE_INVALID = 416
Expand Down Expand Up @@ -76,19 +78,50 @@ class ResponseStatus(IntEnum):
VARIANT_NEGOTIATES = 506
NOT_EXTENDED = 510
NETWORK_AUTH_REQUIRED = 511

# 500s WebDAV
INSUFFICIENT_STORAGE = 507
LOOP_DETECTED = 508

@staticmethod
def ClientErrors() -> Set["ResponseStatus"]:
"""Gets the set of valid 400-level "client" error responses.

:return: The set of valid 400-level "client" error responses.
:rtype: Set[ResponseStatus]
"""
return {status for status in set(ResponseStatus) if status in range(400, 499)}

@staticmethod
def ServerErrors() -> Set["ResponseStatus"]:
"""Gets the set of valid 500-level "server" error responses.

:return: The set of valid 500-level "server" error responses.
:rtype: Set[ResponseStatus]
"""
return {status for status in set(ResponseStatus) if status in range(500, 599)}

@staticmethod
def FromOGDResult(result_status:RequestResult.ResultStatus) -> "ResponseStatus":
"""Get a ResponseStatus equivalent to given ResultStatus from OGD-core

:param result_status: An OGD-core ResultStatus
:type result_status: ogd.core.requests.RequestResult.ResultStatus
:return: A ResponseStatus equivalent to result_status
:rtype: ResponseStatus
"""
ret_val : ResponseStatus

match result_status:
case RequestResult.ResultStatus.SUCCESS:
ret_val = ResponseStatus.OK
case RequestResult.ResultStatus.FAILURE:
ret_val = ResponseStatus.BAD_REQUEST
case _:
ret_val = ResponseStatus.INTERNAL_ERR

return ret_val

def __str__(self):
"""Stringify function for ResponseStatus objects.

Expand Down
Loading