std/cgi (original) (raw)

Source Edit

This module implements helper procs for CGI applications. Example:

import std/[strtabs, cgi]

when debug: setTestData("name", "Klaus", "password", "123456")

var myData = readData()

validateData(myData, "name", "password")

writeContentType()

write(stdout, "\n") write(stdout, "Test\n") writeLine(stdout, "your name: " & myData["name"]) writeLine(stdout, "your password: " & myData["password"]) writeLine(stdout, "")

Procs

proc cgiError(msg: string) {.noreturn, ...raises: [CgiError], tags: [], forbids: [].}

Raises a CgiError exception with message msg.Source Edit

proc existsCookie(name: string): bool {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Checks if a cookie of name exists.Source Edit

proc getContentLength(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the CONTENT_LENGTH environment variable.Source Edit

proc getContentType(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the CONTENT_TYPE environment variable.Source Edit

proc getCookie(name: string): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Gets a cookie. If no cookie of name exists, "" is returned.Source Edit

proc getDocumentRoot(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the DOCUMENT_ROOT environment variable.Source Edit

proc getGatewayInterface(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the GATEWAY_INTERFACE environment variable.Source Edit

proc getHttpAccept(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the HTTP_ACCEPT environment variable.Source Edit

proc getHttpAcceptCharset(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the HTTP_ACCEPT_CHARSET environment variable.Source Edit

proc getHttpAcceptEncoding(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the HTTP_ACCEPT_ENCODING environment variable.Source Edit

proc getHttpAcceptLanguage(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the HTTP_ACCEPT_LANGUAGE environment variable.Source Edit

proc getHttpConnection(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the HTTP_CONNECTION environment variable.Source Edit

proc getHttpCookie(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the HTTP_COOKIE environment variable.Source Edit

proc getHttpHost(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the HTTP_HOST environment variable.Source Edit

proc getHttpReferer(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the HTTP_REFERER environment variable.Source Edit

proc getHttpUserAgent(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the HTTP_USER_AGENT environment variable.Source Edit

proc getPathInfo(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the PATH_INFO environment variable.Source Edit

proc getPathTranslated(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the PATH_TRANSLATED environment variable.Source Edit

proc getQueryString(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the QUERY_STRING environment variable.Source Edit

proc getRemoteAddr(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the REMOTE_ADDR environment variable.Source Edit

proc getRemoteHost(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the REMOTE_HOST environment variable.Source Edit

proc getRemoteIdent(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the REMOTE_IDENT environment variable.Source Edit

proc getRemotePort(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the REMOTE_PORT environment variable.Source Edit

proc getRemoteUser(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the REMOTE_USER environment variable.Source Edit

proc getRequestMethod(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the REQUEST_METHOD environment variable.Source Edit

proc getRequestURI(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the REQUEST_URI environment variable.Source Edit

proc getScriptFilename(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the SCRIPT_FILENAME environment variable.Source Edit

proc getScriptName(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the SCRIPT_NAME environment variable.Source Edit

proc getServerAddr(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the SERVER_ADDR environment variable.Source Edit

proc getServerAdmin(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the SERVER_ADMIN environment variable.Source Edit

proc getServerName(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the SERVER_NAME environment variable.Source Edit

proc getServerPort(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the SERVER_PORT environment variable.Source Edit

proc getServerProtocol(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the SERVER_PROTOCOL environment variable.Source Edit

proc getServerSignature(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the SERVER_SIGNATURE environment variable.Source Edit

proc getServerSoftware(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}

Returns contents of the SERVER_SOFTWARE environment variable.Source Edit

proc readData(allowedMethods: set[RequestMethod] = {methodNone, methodPost, methodGet}): StringTableRef {....raises: [CgiError, ValueError, IOError], tags: [ReadEnvEffect, ReadIOEffect], forbids: [].}

Reads CGI data. If the client does not use a method listed in the allowedMethods set, a CgiError exception is raised.Source Edit

proc setCookie(name, value: string) {....raises: [IOError], tags: [WriteIOEffect], forbids: [].}

Sets a cookie.Source Edit

proc setStackTraceStdout() {....raises: [], tags: [], forbids: [].}

Makes Nim output stacktraces to stdout, instead of server log.Source Edit

proc setTestData(keysvalues: varargs[string]) {....raises: [OSError], tags: [WriteEnvEffect], forbids: [].}

Fills the appropriate environment variables to test your CGI application. This can only simulate the 'GET' request method. keysvalues should provide embedded (name, value)-pairs. Example:

setTestData("name", "Hanz", "password", "12345")

Source Edit

proc validateData(data: StringTableRef; validKeys: varargs[string]) {. ...raises: [CgiError], tags: [], forbids: [].}

Validates data; raises CgiError if this fails. This checks that each variable name of the CGI data occurs in the validKeys array.Source Edit

proc writeContentType() {....raises: [IOError], tags: [WriteIOEffect], forbids: [].}

Calls this before starting to send your HTML data to stdout. This implements this part of the CGI protocol:

write(stdout, "Content-type: text/html\n\n")

Source Edit

proc writeErrorMessage(data: string) {....raises: [], tags: [WriteIOEffect], forbids: [].}

Tries to reset browser state and writes data to stdout in tag.Source Edit

proc xmlEncode(s: string): string {....raises: [], tags: [], forbids: [].}

Encodes a value to be XML safe:

Iterators

iterator decodeData(allowedMethods: set[RequestMethod] = {methodNone, methodPost, methodGet}): tuple[key, value: string] {. ...raises: [CgiError, ValueError, IOError], tags: [ReadEnvEffect, ReadIOEffect], forbids: [].}

Reads and decodes CGI data and yields the (name, value) pairs the data consists of. If the client does not use a method listed in the allowedMethods set, a CgiError exception is raised.Source Edit

iterator decodeData(data: string): tuple[key, value: string] {....raises: [], tags: [], forbids: [].}

Reads and decodes CGI data and yields the (name, value) pairs the data consists of.Source Edit