Crate rust_cgi

source ·
Expand description

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

§Installation & Usage

Cargo.toml:

[dependencies]
rust_cgi = "0.3"

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

extern crate rust_cgi as 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 rust_cgi as 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.

It is also possible to call the rust_cgi::handle ro rust_cgi::try_handle function directly inside your main function:

extern crate rust_cgi as 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)

Re-exports§

  • pub extern crate http;

Macros§

  • Create a main function for a CGI script
  • Create a CGI main function based on a function which returns a Result<rust_cgi::Response, _>

Functions§

  • Sends blob with that status code, and optional content type, None for no Content-Type header to be set.
  • A HTTP Reponse with no body and that HTTP status code, e.g. return rust_cgi::empty_response(404); to return a HTTP 404 Not Found.
  • Call a function as a CGI programme.
  • Converts text to bytes (UTF8) and sends that as the body with that status_code and HTML Content-Type header (text/html)
  • Convert to a string and return that with the status code
  • Serves this content as text/plain text response, with that status code
  • Call a function as a CGI programme.

Type Aliases§