application

    Dark Mode
Search:
Group by:

Procs

proc registerErrorHandler(app: Prologue; code: HttpCode; handler: ErrorHandler) {...}{.
    inline, raises: [Exception], tags: [RootEffect].}

Registers a user-defined error handler. You can specify HttpCode and its corresponding handler.

When the HTTP code of response exists in the error handler table, corresponding handler will be executed.

  Source Edit
proc registerErrorHandler(app: Prologue; code: set[HttpCode];
                          handler: ErrorHandler) {...}{.inline, raises: [Exception],
    tags: [RootEffect].}
Registers the same handler with a set of HttpCode.   Source Edit
proc registerErrorHandler(app: Prologue; code: openArray[HttpCode];
                          handler: ErrorHandler) {...}{.inline, raises: [Exception],
    tags: [RootEffect].}
Registers the same handler with a sequence of HttpCode. This is a helper function.

Example:

## Examples for all registerErrorHandler
proc go404*(ctx: Context) {.async.} =
  resp "Something wrong!", Http404

proc go20x*(ctx: Context) {.async.} =
  resp "Ok!", Http200

proc go30x*(ctx: Context) {.async.} =
  resp "EveryThing else?", Http301

var app = newApp()
app.registerErrorHandler(Http404, go404)
app.registerErrorHandler({Http200 .. Http204}, go20x)
app.registerErrorHandler(@[Http301, Http304, Http307], go30x)

doAssert app.errorHandlerTable[Http404] == go404
doAssert app.errorHandlerTable[Http202] == go20x
doAssert app.errorHandlerTable[Http304] == go30x
  Source Edit
proc addRoute(app: Prologue; route: Regex; handler: HandlerAsync;
              httpMethod = HttpGet; middlewares: openArray[HandlerAsync] = @[]) {...}{.
    inline, raises: [], tags: [].}

Adds a single regex route with handler and don't check whether route is duplicated.

Notes: The framework will automatically register HttpHead method, if HttpMethod is HttpGet.

  Source Edit
proc addRoute(app: Prologue; route: Regex; handler: HandlerAsync;
              httpMethod: openArray[HttpMethod];
              middlewares: openArray[HandlerAsync] = @[]) {...}{.inline, raises: [],
    tags: [].}
Adds a single regex route and handler, but supports a set of HttpMethod.   Source Edit
proc addRoute(app: Prologue; route: string; handler: HandlerAsync;
              httpMethod = HttpGet; name = "";
              middlewares: openArray[HandlerAsync] = @[]) {...}{.raises: [RouteError,
    KeyError, DuplicatedRouteError, ValueError, DuplicatedReversedRouteError],
    tags: [].}

Adds a single route and handler. It checks whether route is duplicated.

Notes: The framework will automatically register HttpHead method, if HttpMethod is HttpGet.

  Source Edit
proc addRoute(app: Prologue; route: string; handler: HandlerAsync;
              httpMethod: openArray[HttpMethod]; name = "";
              middlewares: openArray[HandlerAsync] = @[]) {...}{.raises: [RouteError,
    KeyError, DuplicatedRouteError, ValueError, DuplicatedReversedRouteError],
    tags: [].}
Adds a single route and handler, but supports a set of HttpMethod. It also checks whether route is duplicated   Source Edit
proc addRoute(app: Prologue; patterns: openArray[UrlPattern]; baseRoute = "";
              middlewares: Option[seq[HandlerAsync]] = none(seq[HandlerAsync])) {...}{.raises: [
    RouteError, KeyError, DuplicatedRouteError, ValueError,
    DuplicatedReversedRouteError, Exception], tags: [RootEffect].}
Adds multiple routes with handlers.   Source Edit
proc head(app: Prologue; route: string; handler: HandlerAsync; name = "";
          middlewares: openArray[HandlerAsync] = @[]) {...}{.inline, raises: [
    RouteError, KeyError, DuplicatedRouteError, ValueError,
    DuplicatedReversedRouteError], tags: [].}
Adds route and handler with HttpHead.   Source Edit
proc get(app: Prologue; route: string; handler: HandlerAsync; name = "";
         middlewares: openArray[HandlerAsync] = @[]) {...}{.inline, raises: [
    RouteError, KeyError, DuplicatedRouteError, ValueError,
    DuplicatedReversedRouteError], tags: [].}
Adds route and handler with HttpGet and HttpHead.   Source Edit
proc post(app: Prologue; route: string; handler: HandlerAsync; name = "";
          middlewares: openArray[HandlerAsync] = @[]) {...}{.inline, raises: [
    RouteError, KeyError, DuplicatedRouteError, ValueError,
    DuplicatedReversedRouteError], tags: [].}
Adds route and handler with HttpPost.   Source Edit
proc put(app: Prologue; route: string; handler: HandlerAsync; name = "";
         middlewares: openArray[HandlerAsync] = @[]) {...}{.inline, raises: [
    RouteError, KeyError, DuplicatedRouteError, ValueError,
    DuplicatedReversedRouteError], tags: [].}
Adds route and handler with HttpPut.   Source Edit
proc delete(app: Prologue; route: string; handler: HandlerAsync; name = "";
            middlewares: openArray[HandlerAsync] = @[]) {...}{.inline, raises: [
    RouteError, KeyError, DuplicatedRouteError, ValueError,
    DuplicatedReversedRouteError], tags: [].}
Adds route and handler with HttpDelete.   Source Edit
proc trace(app: Prologue; route: string; handler: HandlerAsync; name = "";
           middlewares: openArray[HandlerAsync] = @[]) {...}{.inline, raises: [
    RouteError, KeyError, DuplicatedRouteError, ValueError,
    DuplicatedReversedRouteError], tags: [].}
Adds route and handler with HttpTrace.   Source Edit
proc options(app: Prologue; route: string; handler: HandlerAsync; name = "";
             middlewares: openArray[HandlerAsync] = @[]) {...}{.inline, raises: [
    RouteError, KeyError, DuplicatedRouteError, ValueError,
    DuplicatedReversedRouteError], tags: [].}
Adds route and handler with HttpOptions.   Source Edit
proc connect(app: Prologue; route: string; handler: HandlerAsync; name = "";
             middlewares: openArray[HandlerAsync] = @[]) {...}{.inline, raises: [
    RouteError, KeyError, DuplicatedRouteError, ValueError,
    DuplicatedReversedRouteError], tags: [].}
Adds route and handler with HttpConnect.   Source Edit
proc patch(app: Prologue; route: string; handler: HandlerAsync; name = "";
           middlewares: openArray[HandlerAsync] = @[]) {...}{.inline, raises: [
    RouteError, KeyError, DuplicatedRouteError, ValueError,
    DuplicatedReversedRouteError], tags: [].}
Adds route and handler with HttpPatch.   Source Edit
proc all(app: Prologue; route: string; handler: HandlerAsync; name = "";
         middlewares: openArray[HandlerAsync] = @[]) {...}{.inline, raises: [
    RouteError, KeyError, DuplicatedRouteError, ValueError,
    DuplicatedReversedRouteError], tags: [].}
Adds route and handler with all HttpMethod.   Source Edit
proc addGroup(group: Group; route: string; handler: HandlerAsync;
              httpMethod = HttpGet; name = "";
              middlewares: openArray[HandlerAsync] = @[]) {...}{.raises: [RouteError,
    KeyError, DuplicatedRouteError, ValueError, DuplicatedReversedRouteError],
    tags: [].}

Adds a single route and handler. It checks whether route is duplicated.

Notes: The framework will automatically register HttpHead method, if httpMethod is HttpGet.

  Source Edit
proc addGroup(group: Group; route: string; handler: HandlerAsync;
              httpMethod: openArray[HttpMethod]; name = "";
              middlewares: openArray[HandlerAsync] = @[]) {...}{.raises: [RouteError,
    KeyError, DuplicatedRouteError, ValueError, DuplicatedReversedRouteError],
    tags: [].}
Adds a single regex route and handler, but supports a set of HttpMethod. It also checks whether route is duplicated   Source Edit
proc addGroup(app: Prologue; patterns: openArray[(Group, seq[UrlPattern])]) {...}{.raises: [
    RouteError, KeyError, DuplicatedRouteError, ValueError,
    DuplicatedReversedRouteError, Exception], tags: [RootEffect].}
Adds multiple routes with handlers.   Source Edit
proc head(group: Group; route: string; handler: HandlerAsync; name = "";
          middlewares: openArray[HandlerAsync] = @[]) {...}{.inline, raises: [
    RouteError, KeyError, DuplicatedRouteError, ValueError,
    DuplicatedReversedRouteError], tags: [].}
Adds route and handler with HttpHead.   Source Edit
proc get(group: Group; route: string; handler: HandlerAsync; name = "";
         middlewares: openArray[HandlerAsync] = @[]) {...}{.inline, raises: [
    RouteError, KeyError, DuplicatedRouteError, ValueError,
    DuplicatedReversedRouteError], tags: [].}
Adds route and handler with HttpGet and HttpHead.   Source Edit
proc post(group: Group; route: string; handler: HandlerAsync; name = "";
          middlewares: openArray[HandlerAsync] = @[]) {...}{.inline, raises: [
    RouteError, KeyError, DuplicatedRouteError, ValueError,
    DuplicatedReversedRouteError], tags: [].}
Adds route and handler with HttpPost.   Source Edit
proc put(group: Group; route: string; handler: HandlerAsync; name = "";
         middlewares: openArray[HandlerAsync] = @[]) {...}{.inline, raises: [
    RouteError, KeyError, DuplicatedRouteError, ValueError,
    DuplicatedReversedRouteError], tags: [].}
Adds route and handler with HttpPut.   Source Edit
proc delete(group: Group; route: string; handler: HandlerAsync; name = "";
            middlewares: openArray[HandlerAsync] = @[]) {...}{.inline, raises: [
    RouteError, KeyError, DuplicatedRouteError, ValueError,
    DuplicatedReversedRouteError], tags: [].}
Adds route and handler with HttpDelete.   Source Edit
proc trace(group: Group; route: string; handler: HandlerAsync; name = "";
           middlewares: openArray[HandlerAsync] = @[]) {...}{.inline, raises: [
    RouteError, KeyError, DuplicatedRouteError, ValueError,
    DuplicatedReversedRouteError], tags: [].}
Adds route and handler with HttpTrace.   Source Edit
proc options(group: Group; route: string; handler: HandlerAsync; name = "";
             middlewares: openArray[HandlerAsync] = @[]) {...}{.inline, raises: [
    RouteError, KeyError, DuplicatedRouteError, ValueError,
    DuplicatedReversedRouteError], tags: [].}
Adds route and handler with HttpOptions.   Source Edit
proc connect(group: Group; route: string; handler: HandlerAsync; name = "";
             middlewares: openArray[HandlerAsync] = @[]) {...}{.inline, raises: [
    RouteError, KeyError, DuplicatedRouteError, ValueError,
    DuplicatedReversedRouteError], tags: [].}
Adds route and handler with HttpConnect.   Source Edit
proc patch(group: Group; route: string; handler: HandlerAsync; name = "";
           middlewares: openArray[HandlerAsync] = @[]) {...}{.inline, raises: [
    RouteError, KeyError, DuplicatedRouteError, ValueError,
    DuplicatedReversedRouteError], tags: [].}
Adds route and handler with HttpPatch.   Source Edit
proc all(group: Group; route: string; handler: HandlerAsync; name = "";
         middlewares: openArray[HandlerAsync] = @[]) {...}{.inline, raises: [
    RouteError, KeyError, DuplicatedRouteError, ValueError,
    DuplicatedReversedRouteError], tags: [].}
Adds route and handler with all HttpMethod.   Source Edit
proc newAppQueryEnv(middlewares: openArray[HandlerAsync] = @[];
                    startup: openArray[Event] = @[];
                    shutdown: openArray[Event] = @[]; errorHandlerTable = newErrorHandlerTable(
    [(Http404, default404Handler), (Http500, default500Handler)]);
                    appData = newStringTable(mode = modeCaseSensitive)): Prologue {...}{.raises: [
    ValueError, IOError, KeyError, EmptySecretKeyError, OSError,
    JsonParsingError, Exception],
    tags: [ReadEnvEffect, ReadDirEffect, ReadIOEffect, WriteIOEffect].}
Creates a new App instance. by querying environment variables: PROLOGUE.   Source Edit
proc handleContext(app: Prologue; ctx: Context): owned(Future[void]) {...}{.gcsafe,
    raises: [Exception], tags: [RootEffect].}
Handles the context of each request. Todo Optimization   Source Edit
proc handleRequest(app: Prologue; nativeRequest: NativeRequest): Future[void] {...}{.
    gcsafe, raises: [KeyError, Exception, ValueError], tags: [RootEffect].}
Handles the native request and sends response to the client.   Source Edit
proc run(app: Prologue) {...}{.raises: [Exception, ValueError, OSError,
                                   IOSelectorsException, KeyError], tags: [
    RootEffect, TimeEffect, WriteIOEffect, ReadIOEffect].}
Starts an Application.   Source Edit

Funcs

func use(app: var Prologue; middlewares: varargs[HandlerAsync]) {...}{.inline,
    raises: [], tags: [].}
  Source Edit
func newApp(settings: Settings = newSettings();
            middlewares: openArray[HandlerAsync] = @[];
            startup: openArray[Event] = @[]; shutdown: openArray[Event] = @[];
    errorHandlerTable = newErrorHandlerTable(
    [(Http404, default404Handler), (Http500, default500Handler)]);
            appData = newStringTable(mode = modeCaseSensitive)): Prologue {...}{.
    inline, raises: [ValueError], tags: [].}
Creates a new App instance.
Params:
  • settings is a global immutable setting which is visible to all handlers.
  • middlewares is a global sequence of middlewares.
  • startup is used to execute tasks before the application starts.
  • shutdown is used to execute tasks after the application stops.
  • errorHandlerTable stores HTTP codes and corresponding handlers.
  • appData is a global user-defined data.
  Source Edit

Exports

getAllInfos, group, Group, newGroup, addHeader, initMockingRequest, request, charset, initRequest, setHeader, getHeaderOrDefault, url, getHeader, setScheme, contentType, query, port, beast/request, Request, getCookie, respond, hasHeader, send, scheme, stripPath, body, close, respond, setHeader, respond, headers, secure, path, reqMethod, NativeRequest, hostName, serve, execStartupEvent, appName, appAddress, appPort, Prologue, server, newPrologue, beast/server, appDebug, []=, getTables, [], initResponseHeaders, getOrDefault, httpcore/httplogue, clear, len, del, hasKey, ResponseHeaders, pairs, $, []=, [], initResponseHeaders, add, basicregex, getMessage, parseStringTable, Fault, types, getMessage, Warning, pairs, getAllPrologueEnv, existsPrologueEnv, contains, $, $, BaseType, Error, $, initEnv, [], dumps, values, Info, Session, del, Env, flash, FormPart, getOrDefault, SecretUrl, pairs, delPrologueEnv, EmptySecretKeyError, parseValue, clear, setPrologueEnv, loads, []=, getPrologueEnv, putPrologueEnv, writePrologueEnv, hasKey, flash, getOrDefault, []=, len, FlashLevel, getPrologueEnv, initFormPart, messagesWithCategory, newSession, keys, messages, get, [], configure, EnvWrongFormatError, loadPrologueEnv, BadSecretKeyError, SecretKey, EnvError, len, [], useAsyncHTTPServer, PrologueVersion, ProloguePrefix, constants, SyncEvent, attachment, newErrorHandlerTable, staticFileResponse, save, PathHandler, AsyncEvent, ReRouter, context, gScope, getPathParams, getPostParams, deleteCookie, RePath, getFlashedMsgs, getSettings, getFlashedMsgsWithCategory, Router, BasePatternNode, UploadFile, ErrorHandlerTable, initEvent, respond, urlFor, ErrorHandler, defaultHandler, HandlerAsync, flash, Path, default500Handler, ptrnWildcard, getQueryParams, PatternMatchingType, getPathParams, newContextTo, ReversedRouter, PatternNode, Event, newContext, respond, initEvent, getFlashedMsg, flash, execEvent, initUploadFile, ptrnText, abortExit, GlobalScope, setResponse, Context, getUploadFile, newErrorHandlerTable, send, getCookie, ptrnParam, getFormParams, respond, default404Handler, setCookie, newReversedRouter, setResponse, newContext, getFlashedMsg, setCookie, newContextFrom, urlsafeBase64Encode, base64Encode, urlsafeBase64Decode, encode, base64Encode, base64Decode, urlsafeBase64Encode, switch, middlewaresbase, doNothingClosureMiddleware, CtxSettings, loadSettings, nativesettings, newCtxSettings, hasKey, getOrDefault, Settings, newSettings, loadSettings, [], errorPage, multiPartPage, internalServerErrorPage, loginPage, pages, initResponse, resp, getHeaderOrDefault, setHeader, htmlResponse, setCookie, setCookie, addHeader, abort, jsonResponse, Response, error404, initResponse, getHeader, deleteCookie, hasHeader, $, setHeader, resp, redirect, response, plainTextResponse, respDefault, $, $, add, initPath, compress, newReRouter, addRoute, stripRoute, pattern, route, items, UrlPattern, initRePath, newPathHandler, findHandler, hash, printRoutingTree, findHandler, pattern, newRouter, EmptySecretKeyError, parseValue, getMessage, clear, []=, Fault, types, getMessage, loads, BadSecretKeyError, Warning, parseStringTable, flash, messages, SecretUrl, []=, $, FlashLevel, BaseType, Error, initFormPart, len, newSession, $, dumps, len, Info, Session, del, flash, FormPart, getOrDefault, SecretKey, messagesWithCategory, [], pairs, [], randomSecretKey, randomString, randomBytesSeq, DefaultEntropy, urandom, randomBytesSeq, RouteResetError, AbortError, PrologueError, RouteError, DuplicatedReversedRouteError, httpexception, HttpError, DuplicatedRouteError