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.