Optionally include additional data to present in server-side logs (not returned in API response).

This commit is contained in:
2025-11-04 22:24:25 -06:00
parent 06ac861c20
commit 5e05be6d0e
2 changed files with 9 additions and 2 deletions

View File

@@ -1,6 +1,6 @@
# Package # Package
version = "0.4.11" version = "0.4.12"
author = "Jonathan Bernard" author = "Jonathan Bernard"
description = "Jonathan's opinionated extensions and auth layer for Jester." description = "Jonathan's opinionated extensions and auth layer for Jester."
license = "MIT" license = "MIT"

View File

@@ -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)