diff --git a/buffoonery.nimble b/buffoonery.nimble index 339e550..49df49a 100644 --- a/buffoonery.nimble +++ b/buffoonery.nimble @@ -1,6 +1,6 @@ # Package -version = "0.4.11" +version = "0.4.12" author = "Jonathan Bernard" description = "Jonathan's opinionated extensions and auth layer for Jester." license = "MIT" diff --git a/src/buffoonery/apierror.nim b/src/buffoonery/apierror.nim index 1a6b88a..dc0baac 100644 --- a/src/buffoonery/apierror.nim +++ b/src/buffoonery/apierror.nim @@ -3,7 +3,8 @@ import std/[httpcore, json, options, strutils] type ApiError* = object of CatchableError respMsg*: string 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*( @@ -11,11 +12,13 @@ proc newApiError*( respCode: HttpCode, respMsg: string, respData = none[JsonNode](), + logData = none[JsonNode](), msg = ""): ref ApiError = result = newException(ApiError, msg, parent) result.respCode = respCode result.respMsg = respMsg result.respData = respData + result.logData = logData if not parent.isNil: result.trace &= parent.trace @@ -25,12 +28,14 @@ proc raiseApiError*( respCode: HttpCode, respMsg: string, respData = none[JsonNode](), + logData = none[JsonNode](), msg = "") = var apiError = newApiError( parent = nil, respCode = respCode, respMsg = respMsg, respData = respData, + logData = logData, msg = if msg.isEmptyOrWhitespace: respMsg else: msg) raise apiError @@ -41,6 +46,7 @@ proc raiseApiError*( parent: ref Exception, respMsg: string = "", respData = none[JsonNode](), + logData = none[JsonNode](), msg = "") = var apiError = newApiError( parent = parent, @@ -49,6 +55,7 @@ proc raiseApiError*( if respMsg.isEmptyOrWhitespace: parent.msg else: respMsg, respData = respData, + logData = logData, msg = if msg.isEmptyOrWhitespace: parent.msg else: msg)