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 noContent-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 thatstatus_code
and HTMLContent-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§
- A
Vec<u8>
Request from http - A
Vec<u8>
Response from http