[−][src]Crate cgi
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
)
Re-exports
pub extern crate http; |
Macros
cgi_main | Create a |
cgi_try_main | Create a CGI main function based on a function which returns a |
Functions
binary_response | Sends |
empty_response | A HTTP Reponse with no body and that HTTP status code, e.g. |
err_to_500 | |
handle | Call a function as a CGI programme. |
html_response | Converts |
string_response | Convert to a string and return that with the status code |
text_response | Serves this content as |
Type Definitions
Request | A |
Response | A |