cgi 0.6.0

Create CGI programmes
Documentation

Easily create CGI (RFC 3875) programmes in Rust based on hyper's http types.

Installation & Usage

Cargo.toml:

[dependencies]
cgi = "0.3"

Use the cgi_main! macro, with a function that takes a cgi::Request and returns a cgi::Response.

extern crate cgi;

cgi::cgi_main! { |request: cgi::Request| -> cgi::Response {
cgi::text_response(200, "Hello World")
} }

If your function returns a Result, you can use cgi_try_main!:

extern crate cgi;

cgi::cgi_try_main! { |request: cgi::Request| -> Result<cgi::Response, String> {
let greeting = std::fs::read_to_string("greeting.txt").map_err(|_| "Couldn't open file")?;

Ok(cgi::text_response(200, greeting))
} }

It will parse & extract the CGI environmental variables, and the HTTP request body to create Request<u8>, call your function to create a response, and convert your Response into the correct format and print to stdout. If this programme is not called as CGI (e.g. missing required environmental variables), it will panic.

It is also possible to call the cgi::handle function directly inside your main function:

extern crate cgi;

fn main() { cgi::handle(|request: cgi::Request| -> cgi::Response {
cgi::empty_response(404)
})}

Several shortcut functions are provided (such as html_response/binary_response)