|
|
|
@@ -3,7 +3,8 @@ import std/[httpcore, json, options, strutils]
|
|
|
|
type ApiError* = object of CatchableError
|
|
|
|
type ApiError* = object of CatchableError
|
|
|
|
respMsg*: string
|
|
|
|
respMsg*: string
|
|
|
|
respCode*: HttpCode
|
|
|
|
respCode*: HttpCode
|
|
|
|
respData*: Option[JsonNode]
|
|
|
|
respData*: Option[JsonNode] # Optional data to include in API response
|
|
|
|
|
|
|
|
logData*: Option[JsonNode] # Optional data to include in server-side logs
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
proc newApiError*(
|
|
|
|
proc newApiError*(
|
|
|
|
@@ -11,11 +12,13 @@ proc newApiError*(
|
|
|
|
respCode: HttpCode,
|
|
|
|
respCode: HttpCode,
|
|
|
|
respMsg: string,
|
|
|
|
respMsg: string,
|
|
|
|
respData = none[JsonNode](),
|
|
|
|
respData = none[JsonNode](),
|
|
|
|
|
|
|
|
logData = none[JsonNode](),
|
|
|
|
msg = ""): ref ApiError =
|
|
|
|
msg = ""): ref ApiError =
|
|
|
|
result = newException(ApiError, msg, parent)
|
|
|
|
result = newException(ApiError, msg, parent)
|
|
|
|
result.respCode = respCode
|
|
|
|
result.respCode = respCode
|
|
|
|
result.respMsg = respMsg
|
|
|
|
result.respMsg = respMsg
|
|
|
|
result.respData = respData
|
|
|
|
result.respData = respData
|
|
|
|
|
|
|
|
result.logData = logData
|
|
|
|
|
|
|
|
|
|
|
|
if not parent.isNil:
|
|
|
|
if not parent.isNil:
|
|
|
|
result.trace &= parent.trace
|
|
|
|
result.trace &= parent.trace
|
|
|
|
@@ -25,12 +28,14 @@ proc raiseApiError*(
|
|
|
|
respCode: HttpCode,
|
|
|
|
respCode: HttpCode,
|
|
|
|
respMsg: string,
|
|
|
|
respMsg: string,
|
|
|
|
respData = none[JsonNode](),
|
|
|
|
respData = none[JsonNode](),
|
|
|
|
|
|
|
|
logData = none[JsonNode](),
|
|
|
|
msg = "") =
|
|
|
|
msg = "") =
|
|
|
|
var apiError = newApiError(
|
|
|
|
var apiError = newApiError(
|
|
|
|
parent = nil,
|
|
|
|
parent = nil,
|
|
|
|
respCode = respCode,
|
|
|
|
respCode = respCode,
|
|
|
|
respMsg = respMsg,
|
|
|
|
respMsg = respMsg,
|
|
|
|
respData = respData,
|
|
|
|
respData = respData,
|
|
|
|
|
|
|
|
logData = logData,
|
|
|
|
msg = if msg.isEmptyOrWhitespace: respMsg
|
|
|
|
msg = if msg.isEmptyOrWhitespace: respMsg
|
|
|
|
else: msg)
|
|
|
|
else: msg)
|
|
|
|
raise apiError
|
|
|
|
raise apiError
|
|
|
|
@@ -41,6 +46,7 @@ proc raiseApiError*(
|
|
|
|
parent: ref Exception,
|
|
|
|
parent: ref Exception,
|
|
|
|
respMsg: string = "",
|
|
|
|
respMsg: string = "",
|
|
|
|
respData = none[JsonNode](),
|
|
|
|
respData = none[JsonNode](),
|
|
|
|
|
|
|
|
logData = none[JsonNode](),
|
|
|
|
msg = "") =
|
|
|
|
msg = "") =
|
|
|
|
var apiError = newApiError(
|
|
|
|
var apiError = newApiError(
|
|
|
|
parent = parent,
|
|
|
|
parent = parent,
|
|
|
|
@@ -49,6 +55,7 @@ proc raiseApiError*(
|
|
|
|
if respMsg.isEmptyOrWhitespace: parent.msg
|
|
|
|
if respMsg.isEmptyOrWhitespace: parent.msg
|
|
|
|
else: respMsg,
|
|
|
|
else: respMsg,
|
|
|
|
respData = respData,
|
|
|
|
respData = respData,
|
|
|
|
|
|
|
|
logData = logData,
|
|
|
|
msg =
|
|
|
|
msg =
|
|
|
|
if msg.isEmptyOrWhitespace: parent.msg
|
|
|
|
if msg.isEmptyOrWhitespace: parent.msg
|
|
|
|
else: msg)
|
|
|
|
else: msg)
|
|
|
|
|