# Io Reference

Networking / CGI / CGI

|  | CGI supports accessing CGI parameters passed in environment variables or standard input by a web servers like Apache. Example use:
    #!./ioServer

    cgi = CGI clone

    redirect = cgi getParameters at("redirurl")
    if (redirect and redirect != "",
    	redirect clipAfterStartOfSeq("\r")
    	redirect clipAfterStartOfSeq("\n")
    	cgi redirect(redirect)
    	System exit(0)
     )

    cgi header("Content-type", "text/html")

    cgi write("<html><head><title>test</title><body>")
    cgi write("GET Parameters:")
    cgi getParameters foreach(k, v,
    	cgi write(k .. " = " .. v .. ","))
    )

    cgi write("POST Parameters:")
    cgi postParameters foreach(k, v,
    	cgi write(k .. " = " .. v .. ","))
    )

    cgi write("COOKIES:")
    cgi cookies foreach(k, v,
    	cgi write(k .. " = " .. v .. ",")
    )
|  | contentLength CONTENT_LENGTH from web server - Size of POST Data contentType CONTENT_TYPE from web server cookies Returns a Map of cookies provided by the client decodeUrlParam(aString) Returns a URL decoded version of aString. encodeUrlParam(aString) Returns a URL encoded version of aString. getParameters Parses the QUERY_STRING environment variable and returns a Map containing key/value query value pairs. For testing, a QUERY_STRING can be passed to standard in, one line will be read header(name, value, sendMultiple) Add a header to the output, may only be called before write() is called. One of each header will be sent unless sendMultiple is true httpHeader(name) Fetch a header supplied by the client, such as 'referer' isInWebScript Checks to see if this is being called within a CGI request or from the command-line (testing). Simply checks for System getEnvironmentVariable("GATEWAY_INTERFACE") maxPostSize Maximum size in bytes, to process from user submitted data. Data greater than this will result in a nil postData slot maxPostSizeExceeded Returns true if the POST data exceeds a set maxPostSize pathInfo PATH_INFO from web server pathTranslated PATH_TRANSLATED from web server postData The raw post data sent to the script. Only set if getEnvironmentVariable("REQUEST_METHOD") asLowercase == "post". postParameters Parses the POST data, multipart and urlencoded. Returns a map of submitted variables. For uploaded files, an Object is returned with these slots:
    fileName
    content (raw content of file as Sequence)
    contentType
    contentEncoding
    size (in characters/bytes)
    asString (pretty string of name, type, size)
queryString QUERY_STRING from web server redirect(url) Send a location: and redirect the user. May only be called before write() is called. It is left to the caller to stop any further processing. remoteAddress REMOTE_ADDR from web server - User's IP remoteHost REMOTE_HOST from web server - User's host (often blank) requestMethod GET, POST, PUT, etc requestParameter(name) Lazy developer's helper funtion. Retrieves a value from GET or POST, POST first scriptName SCRIPT_NAME from web server setCookie(name, value, expiresDate, domain, path, secureBool) Sets a cookie, keep in mind this will not be available in cookies() until they next visit to the site. Parameters other than name and value are optional. status(statusCode) Numeric status code to send to the client. Normally, the server will figure this out on its own, but this allows handling 404s and such. write(string, [string...]) Send content for the body of the response