prologue/core/context

Types

PathHandler = ref object
  handler*: HandlerAsync
  middlewares*: seq[HandlerAsync]
  settings*: Settings
  Source Edit
Path = object
  route*: string
  httpMethod*: HttpMethod
  Source Edit
Router = ref object
  callable*: Table[Path, PathHandler]
  Source Edit
RePath = object
  route*: Regex
  httpMethod*: HttpMethod
  Source Edit
ReRouter = ref object
  callable*: seq[(RePath, PathHandler)]
  Source Edit
ReversedRouter = StringTableRef
  Source Edit
GlobalScope = ref object
  router*: Router
  reversedRouter*: ReversedRouter
  reRouter*: ReRouter
  appData*: StringTableRef
  settings*: Settings
  ctxSettings*: CtxSettings
  Source Edit
Context = ref object
  request*: Request
  response*: Response
  handled*: bool
  middlewares*: seq[HandlerAsync]
  session*: Session
  cleanedData*: StringTableRef
  ctxData*: StringTableRef
  localSettings*: Settings
  gScope: GlobalScope
  size: int
  first: bool
  Source Edit
AsyncEvent = proc (): Future[void] {...}{.closure, gcsafe.}
  Source Edit
SyncEvent = proc () {...}{.closure, gcsafe.}
  Source Edit
Event = object
  case async*: bool
  of true:
      asyncHandler*: AsyncEvent

  of false:
      syncHandler*: SyncEvent

  
  Source Edit
HandlerAsync = proc (ctx: Context): Future[void] {...}{.closure, gcsafe.}
  Source Edit
ErrorHandler = proc (ctx: Context): Future[void] {...}{.nimcall, gcsafe.}
  Source Edit
ErrorHandlerTable = TableRef[HttpCode, ErrorHandler]
  Source Edit
UploadFile = object
  filename*: string
  body*: string
  Source Edit

Procs

proc gScope(ctx: Context): lent GlobalScope {...}{.inline, raises: [], tags: [].}
  Source Edit
proc size(ctx: Context): int {...}{.inline, raises: [], tags: [].}
  Source Edit
proc incSize(ctx: Context; num = 1) {...}{.inline, raises: [], tags: [].}
  Source Edit
proc first(ctx: Context): bool {...}{.inline, raises: [], tags: [].}
  Source Edit
proc first=(ctx: Context; first: bool) {...}{.inline, raises: [], tags: [].}
  Source Edit
proc initUploadFile(filename, body: string): UploadFile {...}{.inline, raises: [], tags: [].}
Initiates a UploadFile.   Source Edit
proc getUploadFile(ctx: Context; name: string): UploadFile {...}{.inline,
    raises: [KeyError], tags: [].}
Gets the UploadFile from request.   Source Edit
proc save(uploadFile: UploadFile; dir: string; filename = "") {...}{.inline,
    raises: [OSError, IOError], tags: [ReadDirEffect, WriteIOEffect].}
Saves the UploadFile to dir.   Source Edit
proc newErrorHandlerTable(initialSize = defaultInitialSize): ErrorHandlerTable {...}{.
    inline, raises: [], tags: [].}
  Source Edit
proc newErrorHandlerTable(pairs: openArray[(HttpCode, ErrorHandler)]): ErrorHandlerTable {...}{.
    inline, raises: [Exception], tags: [RootEffect].}
  Source Edit
proc newReversedRouter(): ReversedRouter {...}{.inline, raises: [], tags: [].}
  Source Edit
proc initEvent(handler: AsyncEvent): Event {...}{.inline, raises: [], tags: [].}
  Source Edit
proc initEvent(handler: SyncEvent): Event {...}{.inline, raises: [], tags: [].}
  Source Edit
proc newContext(request: Request; response: Response; gScope: GlobalScope): Context {...}{.
    inline, raises: [], tags: [].}
Creates a new Context.   Source Edit
proc getSettings(ctx: Context; key: string): JsonNode {...}{.inline, raises: [KeyError],
    tags: [].}
Get context.settings(First lookup localSettings then lookup globalSettings).   Source Edit
proc handle(ctx: Context): Future[void] {...}{.inline, raises: [ValueError,
    IOSelectorsException, Exception], tags: [RootEffect].}
  Source Edit
proc send(ctx: Context; content: string): Future[void] {...}{.inline,
    raises: [ValueError, IOSelectorsException, Exception], tags: [RootEffect].}
  Source Edit
proc respond(ctx: Context; code: HttpCode; body: string;
            headers: HttpHeaders = newHttpHeaders()): Future[void] {...}{.inline,
    raises: [ValueError, IOSelectorsException, Exception], tags: [RootEffect].}
  Source Edit
proc hasHeader(request: var Request; key: string): bool {...}{.inline, raises: [KeyError],
    tags: [].}
  Source Edit
proc setHeader(request: var Request; key, value: string) {...}{.inline, raises: [KeyError],
    tags: [].}
  Source Edit
proc setHeader(request: var Request; key: string; value: sink seq[string]) {...}{.inline,
    raises: [KeyError], tags: [].}
  Source Edit
proc addHeader(request: var Request; key, value: string) {...}{.inline, raises: [KeyError],
    tags: [].}
  Source Edit
proc getCookie(ctx: Context; key: string; default: string = ""): string {...}{.inline,
    raises: [], tags: [].}
Gets Cookie from Request.   Source Edit
proc setCookie(ctx: Context; key, value: string; expires = "";
              maxAge: Option[int] = none(int); domain = ""; path = ""; secure = false;
              httpOnly = false; sameSite = Lax) {...}{.inline, raises: [KeyError], tags: [].}
Sets Cookie for Response.   Source Edit
proc setCookie(ctx: Context; key, value: string; expires: DateTime | Time;
              maxAge: Option[int] = none(int); domain = ""; path = ""; secure = false;
              httpOnly = false; sameSite = Lax) {...}{.inline.}
Sets Cookie for Response.   Source Edit
proc deleteCookie(ctx: Context; key: string; path = ""; domain = "") {...}{.inline,
    raises: [KeyError], tags: [TimeEffect].}
Deletes Cookie from Response.   Source Edit
proc defaultHandler(ctx: Context): owned(Future[void]) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc default404Handler(ctx: Context): owned(Future[void]) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc default500Handler(ctx: Context): owned(Future[void]) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc getPostParams(ctx: Context; key: string; default = ""): string {...}{.inline, raises: [],
    tags: [].}
Gets the parameters by HttpPost.   Source Edit
proc getQueryParams(ctx: Context; key: string; default = ""): string {...}{.inline, raises: [],
    tags: [].}
Gets the query strings(for example, "www.google.com/hello?name=12", name=12).   Source Edit
proc getPathParams(ctx: Context; key: string): string {...}{.inline, raises: [], tags: [].}
Gets the route parameters(for example, "/hello/{name}").   Source Edit
proc getPathParams[T: BaseType](ctx: Context; key: sink string; default: T): T {...}{.inline.}
Gets the route parameters(for example, "/hello/{name}").   Source Edit
proc setResponse(ctx: Context; code: HttpCode; httpHeaders = [
    ("Content-Type", "text/html; charset=UTF-8")].newHttpHeaders; body = "";
                version = HttpVer11) {...}{.inline, raises: [], tags: [].}
Handy to make the response of ctx.   Source Edit
proc setResponse(ctx: Context; response: Response) {...}{.inline, raises: [], tags: [].}
Handy to make the response of ctx.   Source Edit
proc multiMatch(s: string; replacements: StringTableRef): string {...}{.
    raises: [KeyError, ValueError], tags: [].}
  Source Edit
proc multiMatch(s: string; replacements: varargs[(string, string)]): string {...}{.inline,
    raises: [KeyError, ValueError], tags: [].}
  Source Edit
proc urlFor(ctx: Context; handler: string;
           parameters: openArray[(string, string)] = @[];
           queryParams: openArray[(string, string)] = @[]; usePlus = true; omitEq = true): string {...}{.
    inline, raises: [KeyError, ValueError], tags: [].}
{ } can't appear in url   Source Edit
proc abortExit(ctx: Context; code = Http401; body = ""; headers = newHttpHeaders();
              version = HttpVer11) {...}{.inline, raises: [AbortError], tags: [].}
Abort the program.   Source Edit
proc attachment(ctx: Context; downloadName = ""; charset = "utf-8") {...}{.inline,
    raises: [ValueError], tags: [].}
attachment is used to specify the file will be downloaded.   Source Edit
proc staticFileResponse(ctx: Context; filename, dir: string; mimetype = "";
                       downloadName = ""; charset = "utf-8";
                       headers = newHttpHeaders()): owned(Future[void]) {...}{.
    raises: [Exception], tags: [ReadDirEffect, RootEffect, ReadIOEffect].}
Serves static files.   Source Edit