Crate async_scgi[−][src]
Expand description
Async SCGI Client & Server
This library will work with any async runtime that uses the futures-io
library I/O traits.
This crate provides two main tools:
- The
ScgiRequest
type to read & write SCGI requests. - The
read_request
function to read an SCGI request from a socket.
Client Example
use async_scgi::{ScgiHeaders, ScgiRequest};
let mut stream = TcpStream::connect("127.0.0.1:12345").await?;
let mut headers = ScgiHeaders::new();
headers.insert("PATH_INFO".to_owned(), "/".to_owned());
headers.insert("SERVER_NAME".to_owned(), "example.com".to_owned());
let body = b"Hello world!";
let req = ScgiRequest {
headers,
body: body.to_vec(),
};
stream.write_all(&req.encode()).await?;
let mut resp = vec![];
stream.read_to_end(&mut resp).await?;
let resp_str = from_utf8(&resp)?;
println!("{}", resp_str);
Server Example
let listener = TcpListener::bind("127.0.0.1:12345").await?;
let mut incoming = listener.incoming();
while let Some(stream) = incoming.next().await {
let mut stream = BufReader::new(stream?);
let req = async_scgi::read_request(&mut stream).await?;
println!("Headers: {:?}", req.headers);
println!("Body: {}", from_utf8(&req.body).unwrap());
stream.write_all(b"Hello Client!").await?;
}
Modules
Functions for working with SCGI headers directly.
Structs
An SCGI request.
Enums
An error that occurred while reading an SCGI request.
Functions
Read an SCGI request.
Type Definitions
An ScgiRequest header map.