Spec-Zone.ru › Nim 1

cgi

Этот модуль реализует вспомогательные процедуры для CGI-приложений. Пример:

import strtabs, cgi

# Fill the values when debugging:
when debug:
  setTestData("name", "Klaus", "password", "123456")
# read the data into `myData`
var myData = readData()
# check that the data's variable names are "name" or "password"
validateData(myData, "name", "password")
# start generating content:
writeContentType()
# generate content:
write(stdout, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n")
write(stdout, "<html><head><title>Test</title></head><body>\n")
writeLine(stdout, "your name: " & myData["name"])
writeLine(stdout, "your password: " & myData["password"])
writeLine(stdout, "</body></html>")

Импорты

strutils, os, strtabs, cookies, uri

Типы

CgiError = object of IOError
исключение, которое генерируется при ошибке CGI Исходный код Редактировать
RequestMethod = enum
  methodNone,               ## no REQUEST_METHOD environment variable
  methodPost,               ## query uses the POST method
  methodGet                  ## query uses the GET method
используемый метод запроса Исходный код Редактировать

Процедуры

proc xmlEncode(s: string): string {...}{.raises: [], tags: [].}
Кодирует значение для безопасного использования в XML:
  • " заменяется на &quot;
  • < заменяется на &lt;
  • > заменяется на &gt;
  • & заменяется на &amp;
  • все остальные символы передаются.
Исходный код Изменить
proc cgiError(msg: string) {...}{.noreturn, raises: [CgiError], tags: [].}
генерирует исключение ECgi с сообщением msg. Исходный код Изменить
proc readData(allowedMethods: set[RequestMethod] = {methodNone, methodPost,
    methodGet}): StringTableRef {...}{.raises: [CgiError, ValueError, IOError],
                                  tags: [ReadEnvEffect, ReadIOEffect].}
Чтение данных CGI. Если клиент не использует метод, указанный в allowedMethods наборе, возникает исключение ECgi. Исходный код Изменить
proc readData(data: string): StringTableRef {...}{.raises: [CgiError], tags: [].}
Чтение данных CGI из строки. Исходный код Изменить
proc validateData(data: StringTableRef; validKeys: varargs[string]) {...}{.
    raises: [CgiError], tags: [].}
валидирует данные; если это не удаётся, генерируется ECgi. Это проверяет, что каждое имя переменной в CGI data присутствует в массиве validKeys. Исходный код Изменить
proc getContentLength(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения CONTENT_LENGTH Исходный код Изменить
proc getContentType(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения CONTENT_TYPE Исходный код Изменить
proc getDocumentRoot(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения DOCUMENT_ROOT Исходный код Изменить
proc getGatewayInterface(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения GATEWAY_INTERFACE Исходный код Изменить
proc getHttpAccept(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения HTTP_ACCEPT Исходный код Изменить
proc getHttpAcceptCharset(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения HTTP_ACCEPT_CHARSET Исходный код Изменить
proc getHttpAcceptEncoding(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения HTTP_ACCEPT_ENCODING Исходный код Изменить
proc getHttpAcceptLanguage(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения HTTP_ACCEPT_LANGUAGE Исходный код Изменить
proc getHttpConnection(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения HTTP_CONNECTION Исходный код Изменить
proc getHttpCookie(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения HTTP_COOKIE Исходный код Изменить
proc getHttpHost(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения HTTP_HOST Исходный код Изменить
proc getHttpReferer(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения HTTP_REFERER Исходный код Изменить
proc getHttpUserAgent(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения HTTP_USER_AGENT Исходный код Изменить
proc getPathInfo(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения PATH_INFO Исходный код Изменить
proc getPathTranslated(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения PATH_TRANSLATED Исходный код Изменить
proc getQueryString(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения QUERY_STRING Исходный код Изменить
proc getRemoteAddr(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения REMOTE_ADDR Исходный код Изменить
proc getRemoteHost(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения REMOTE_HOST Исходный код Изменить
proc getRemoteIdent(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения REMOTE_IDENT Исходный код Изменить
proc getRemotePort(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения REMOTE_PORT Исходный код Изменить
proc getRemoteUser(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения REMOTE_USER Исходный код Изменить
proc getRequestMethod(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения REQUEST_METHOD Исходный код Изменить
proc getRequestURI(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения REQUEST_URI Исходный код Изменить
proc getScriptFilename(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения SCRIPT_FILENAME Исходный код Изменить
proc getScriptName(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения SCRIPT_NAME Исходный код Изменить
proc getServerAddr(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения SERVER_ADDR Исходный код Изменить
proc getServerAdmin(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения SERVER_ADMIN Исходный код Изменить
proc getServerName(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения SERVER_NAME Исходный код Изменить
proc getServerPort(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения SERVER_PORT Исходный код Изменить
proc getServerProtocol(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной окружения SERVER_PROTOCOL Исходный код Изменить
proc getServerSignature(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной среды SERVER_SIGNATURE Исходный код Изменить
proc getServerSoftware(): string {...}{.raises: [], tags: [ReadEnvEffect].}
возвращает содержимое переменной среды SERVER_SOFTWARE Исходный код Изменить
proc setTestData(keysvalues: varargs[string]) {...}{.raises: [OSError],
    tags: [WriteEnvEffect].}
заполняет соответствующие переменные среды для тестирования вашего CGI-приложения. Это может только смоделировать метод запроса 'GET'. keysvalues должны предоставить вложенные пары (имя, значение). Пример:
setTestData("name", "Hanz", "password", "12345")
Исходный код Изменить
proc writeContentType() {...}{.raises: [IOError], tags: [WriteIOEffect].}
вызовите эту функцию перед началом отправки данных HTML в stdout. Это реализует часть протокола CGI:
write(stdout, "Content-type: text/html\n\n")
Исходный код Изменить
proc writeErrorMessage(data: string) {...}{.raises: [IOError], tags: [WriteIOEffect].}
Попытка сбросить состояние браузера и запись data в stdout в тэге <plaintext>. Исходный код Изменить
proc setStackTraceStdout() {...}{.raises: [], tags: [].}
Заставляет Nim выводить отладочные сообщения в stdout вместо файла журнала сервера. Исходный код Изменить
proc setCookie(name, value: string) {...}{.raises: [IOError], tags: [WriteIOEffect].}
Устанавливает cookie. Исходный код Изменить
proc getCookie(name: string): TaintedString {...}{.raises: [], tags: [ReadEnvEffect].}
Получает cookie. Если cookie name не существует, возвращается "". Исходный код Изменить
proc existsCookie(name: string): bool {...}{.raises: [], tags: [ReadEnvEffect].}
Проверяет, существует ли cookie name. Исходный код Изменить

Итераторы

iterator decodeData(data: string): tuple[key, value: TaintedString] {...}{.
    raises: [CgiError], tags: [].}
Читает и декодирует данные CGI, возвращая пары (имя, значение), из которых состоят данные. Исходный код Изменить
iterator decodeData(allowedMethods: set[RequestMethod] = {methodNone,
    methodPost, methodGet}): tuple[key, value: TaintedString] {...}{.
    raises: [CgiError, ValueError, IOError], tags: [ReadEnvEffect, ReadIOEffect].}
Читает и декодирует данные CGI, возвращая пары (имя, значение), из которых состоят данные. Если клиент не использует метод, указанный в allowedMethods наборе, возникает исключение ECgi. Исходный код Изменить

Экспорт

encodeUrl, decodeUrl

© 2006–2021 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/cgi.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API