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, если проверка не пройдена. Проверяет, что каждое имя переменной CGIdataсодержится в массиве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:
-
"заменяется на" -
<заменяется на< -
>заменяется на> -
&заменяется на& - все остальные символы передаются без изменений.
-
Итераторы
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