NagyZoltanPeter 1762548741
chore: clarify api folders (#3637)
* Rename waku_api to rest_api and underlying rest to endpoint for clearity
* Rename node/api to node/kernel_api to suggest that it is an internal accessor to node interface + make everything compile after renaming
* make waku api a top level import
* fix use of relative path imports and use default to root rather in case of waku and tools modules
2025-11-15 23:31:09 +01:00

46 lines
1.6 KiB
Nim

{.push raises: [].}
import std/typetraits, results, chronicles, presto/common
import ./serdes
const MIMETYPE_JSON* = MediaType.init("application/json")
const MIMETYPE_TEXT* = MediaType.init("text/plain")
proc ok*(t: typedesc[RestApiResponse]): RestApiResponse =
RestApiResponse.response("OK", Http200, $MIMETYPE_TEXT)
proc internalServerError*(
t: typedesc[RestApiResponse], msg: string = ""
): RestApiResponse =
RestApiResponse.error(Http500, msg, $MIMETYPE_TEXT)
proc serviceUnavailable*(
t: typedesc[RestApiResponse], msg: string = ""
): RestApiResponse =
RestApiResponse.error(Http503, msg, $MIMETYPE_TEXT)
proc badRequest*(t: typedesc[RestApiResponse], msg: string = ""): RestApiResponse =
RestApiResponse.error(Http400, msg, $MIMETYPE_TEXT)
proc notFound*(t: typedesc[RestApiResponse], msg: string = ""): RestApiResponse =
RestApiResponse.error(Http404, msg, $MIMETYPE_TEXT)
proc preconditionFailed*(
t: typedesc[RestApiResponse], msg: string = ""
): RestApiResponse =
RestApiResponse.error(Http412, msg, $MIMETYPE_TEXT)
proc tooManyRequests*(t: typedesc[RestApiResponse], msg: string = ""): RestApiResponse =
RestApiResponse.error(Http429, msg, $MIMETYPE_TEXT)
proc jsonResponse*(
t: typedesc[RestApiResponse], data: auto, status: HttpCode = Http200
): SerdesResult[RestApiResponse] =
let encoded = ?encodeIntoJsonBytes(data)
ok(RestApiResponse.response(encoded, status, $MIMETYPE_JSON))
proc textResponse*(
t: typedesc[RestApiResponse], data: string, status: HttpCode = Http200
): RestApiResponse =
RestApiResponse.response(data, status, $MIMETYPE_TEXT)