Spec-Zone.ru › Nim

std/cgi

ИсточникРедактировать

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

import std/[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 cgiError(msg: string) {.noreturn, ...raises: [CgiError], tags: [], forbids: [].}
Возбуждает исключение CgiError с сообщением msg. Исходный код Редактировать
proc existsCookie(name: string): bool {....raises: [], tags: [ReadEnvEffect],
                                        forbids: [].}
Проверяет, существует ли cookie с name. Исходный код Редактировать
proc getContentLength(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}
Возвращает содержимое переменной окружения CONTENT_LENGTH. Исходный код Редактировать
proc getContentType(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}
Возвращает содержимое переменной окружения CONTENT_TYPE. Исходный код Редактировать
proc getCookie(name: string): string {....raises: [], tags: [ReadEnvEffect],
                                       forbids: [].}
Получает cookie. Если cookie с name не существует, возвращается "". Исходный код Редактировать
proc getDocumentRoot(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}
Возвращает содержимое переменной окружения DOCUMENT_ROOT. Исходный код Редактировать
proc getGatewayInterface(): string {....raises: [], tags: [ReadEnvEffect],
                                     forbids: [].}
Возвращает содержимое переменной окружения GATEWAY_INTERFACE. Исходный код Редактировать
proc getHttpAccept(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}
Возвращает содержимое переменной окружения HTTP_ACCEPT. Исходный код Редактировать
proc getHttpAcceptCharset(): string {....raises: [], tags: [ReadEnvEffect],
                                      forbids: [].}
Возвращает содержимое переменной окружения HTTP_ACCEPT_CHARSET. Исходный код Редактировать
proc getHttpAcceptEncoding(): string {....raises: [], tags: [ReadEnvEffect],
                                       forbids: [].}
Возвращает содержимое переменной окружения HTTP_ACCEPT_ENCODING. Исходный код Редактировать
proc getHttpAcceptLanguage(): string {....raises: [], tags: [ReadEnvEffect],
                                       forbids: [].}
Возвращает содержимое переменной окружения HTTP_ACCEPT_LANGUAGE. Исходный код Редактировать
proc getHttpConnection(): string {....raises: [], tags: [ReadEnvEffect],
                                   forbids: [].}
Возвращает содержимое переменной окружения HTTP_CONNECTION. Исходный код Редактировать
proc getHttpCookie(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}
Возвращает содержимое переменной окружения HTTP_COOKIE. Исходный код Редактировать
proc getHttpHost(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}
Возвращает содержимое переменной окружения HTTP_HOST. Исходный код Редактировать
proc getHttpReferer(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}
Возвращает содержимое переменной окружения HTTP_REFERER. Исходный код Редактировать
proc getHttpUserAgent(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}
Возвращает содержимое переменной окружения HTTP_USER_AGENT. Исходный код Редактировать
proc getPathInfo(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}
Возвращает содержимое переменной окружения PATH_INFO. Исходный код Редактировать
proc getPathTranslated(): string {....raises: [], tags: [ReadEnvEffect],
                                   forbids: [].}
Возвращает содержимое переменной окружения PATH_TRANSLATED. Исходный код Редактировать
proc getQueryString(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}
Возвращает содержимое переменной окружения QUERY_STRING. Исходный код Редактировать
proc getRemoteAddr(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}
Возвращает содержимое переменной окружения REMOTE_ADDR. Исходный код Редактировать
proc getRemoteHost(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}
Возвращает содержимое переменной окружения REMOTE_HOST. Исходный код Редактировать
proc getRemoteIdent(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}
Возвращает содержимое переменной окружения REMOTE_IDENT. Исходный код Редактировать
proc getRemotePort(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}
Возвращает содержимое переменной окружения REMOTE_PORT. Исходный код Редактировать
proc getRemoteUser(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}
Возвращает содержимое переменной окружения REMOTE_USER. Исходный код Редактировать
proc getRequestMethod(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}
Возвращает содержимое переменной окружения REQUEST_METHOD. Исходный код Редактировать
proc getRequestURI(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}
Возвращает содержимое переменной окружения REQUEST_URI. Исходный код Редактировать
proc getScriptFilename(): string {....raises: [], tags: [ReadEnvEffect],
                                   forbids: [].}
Возвращает содержимое переменной окружения SCRIPT_FILENAME. Исходный код Редактировать
proc getScriptName(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}
Возвращает содержимое переменной окружения SCRIPT_NAME. Исходный код Редактировать
proc getServerAddr(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}
Возвращает содержимое переменной окружения SERVER_ADDR. Исходный код Редактировать
proc getServerAdmin(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}
Возвращает содержимое переменной среды SERVER_ADMIN. Исходный код Редактировать
proc getServerName(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}
Возвращает содержимое переменной среды SERVER_NAME. Исходный код Редактировать
proc getServerPort(): string {....raises: [], tags: [ReadEnvEffect], forbids: [].}
Возвращает содержимое переменной среды SERVER_PORT. Исходный код Редактировать
proc getServerProtocol(): string {....raises: [], tags: [ReadEnvEffect],
                                   forbids: [].}
Возвращает содержимое переменной среды SERVER_PROTOCOL. Исходный код Редактировать
proc getServerSignature(): string {....raises: [], tags: [ReadEnvEffect],
                                    forbids: [].}
Возвращает содержимое переменной среды SERVER_SIGNATURE. Исходный код Редактировать
proc getServerSoftware(): string {....raises: [], tags: [ReadEnvEffect],
                                   forbids: [].}
Возвращает содержимое переменной среды SERVER_SOFTWARE. Исходный код Редактировать
proc readData(allowedMethods: set[RequestMethod] = {methodNone, methodPost,
    methodGet}): StringTableRef {....raises: [CgiError, ValueError, IOError],
                                  tags: [ReadEnvEffect, ReadIOEffect],
                                  forbids: [].}
Считывает данные CGI. Если клиент не использует метод, указанный в наборе allowedMethods, возникает исключение CgiError. Исходный код Редактировать
proc readData(data: string): StringTableRef {....raises: [], tags: [], forbids: [].}
Считывает данные CGI из строки. Исходный код Редактировать
proc setCookie(name, value: string) {....raises: [IOError], tags: [WriteIOEffect],
                                      forbids: [].}
Устанавливает cookie. Исходный код Редактировать
proc setStackTraceStdout() {....raises: [], tags: [], forbids: [].}
Заставляет Nim выводить отладочные данные (stacktraces) в стандартный вывод (stdout), а не в лог-файл сервера. Исходный код Редактировать
proc setTestData(keysvalues: varargs[string]) {....raises: [OSError],
    tags: [WriteEnvEffect], forbids: [].}

Заполняет соответствующие переменные окружения для тестирования вашего CGI-приложения. Это может моделировать только метод запроса 'GET'. keysvalues должны содержать встроенные пары (имя, значение). Пример:

setTestData("name", "Hanz", "password", "12345")
Исходный код Редактировать
proc validateData(data: StringTableRef; validKeys: varargs[string]) {.
    ...raises: [CgiError], tags: [], forbids: [].}
Проверяет данные; вызывает CgiError, если проверка не пройдена. Проверяет, что каждое имя переменной CGI data содержится в массиве validKeys. Исходный код Редактировать
proc writeContentType() {....raises: [IOError], tags: [WriteIOEffect], forbids: [].}

Вызывается перед отправкой данных HTML в stdout. Реализует часть протокола CGI:

write(stdout, "Content-type: text/html\n\n")
Исходный код Редактировать
proc writeErrorMessage(data: string) {....raises: [IOError], tags: [WriteIOEffect],
                                       forbids: [].}
Пытается сбросить состояние браузера и выводит data в stdout в теге <plaintext>. Исходный код Редактировать
proc xmlEncode(s: string): string {....raises: [], tags: [], forbids: [].}
Кодирует значение для безопасной работы с XML:
  • " заменяется на &quot;
  • < заменяется на &lt;
  • > заменяется на &gt;
  • & заменяется на &amp;
  • все остальные символы передаются без изменений.
Исходный код Редактировать

Итераторы

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

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

Spec-Zone.ru

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