Optionally include additional data to present in server-side logs (not returned in API response).
This commit is contained in:
@@ -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"
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user