cgi-spa: Common Gateway Interface for Single Page Applications
CGI-SPA provides a number of globals, helper methods, and monkey patches which simplify the development of single page applications in the form of CGI scripts.
Globals provided
-
$cgi - Common Gateway Interface
-
$param - Access to parameters (read-only OpenStruct like interface)
-
$env - Access to environment variables (read-only OpenStruct like interface)
-
$x - XmlBuilder instance
-
$USER - Host user id
-
$HOME - Home directory
-
$SERVER- Server name
-
SELF - Request URI
-
SELF? - Request URI with '?' appended (avoids spoiling the cache)
-
$USER - user
-
$HOME - user's home directory
-
$HOST - server host
-
$HTTP_GET - request is an HTTP GET
-
$HTTP_POST - request is an HTTP POST
-
$XHR_JSON - request is XmlHttpRequest for JSON
-
$XHTML - user agent accepts XHTML responses
HTML methods
- style! - argument is indented text/data
- system! - run command and capture output
- script! - argument is indented text/data
- body? - capture exceptions, and produce a stack traceback
CGI methods
- json - produce JSON output using the block specified
- json! - produce JSON output using the block specified and exit
- html - produce HTML output using the block specified
- html! - produce HTML output using the block specified and exit
- post - execute block only if method is POST
- post! - if POST, produce HTML output using the block specified and exit
Helper methods
- submit: runs command (or block) as a deamon process
OpenStruct methods (for $params and $env)
- untaint_if_match: untaints value if it matches a regular expression
Builder extensions
- indented_text: matches text indentation to markup
- indented_data: useful for script and styles in HTML syntax
- traceback!: formats an exception traceback
- method_missing: patched to ensure open tags are closed
Command line options
When run from the command line, CGI name=value pairs can be specified. Additionally, the following options are supported:
- --html: HTML (HTTP GET) output is expected
- --post: HTML (HTTP POST) output is expected
- --json: JSON (XML HTTP Request) output is expected
- --xhtml: XHTML output is expected
- --prompt: prompt for key/value pairs using stdin
- --install=path: produce an suexec-callable wrapper script