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.
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