fastcgi-sdk 0.0.5

FastCGI SDK for Rust
Documentation
extern crate fastcgi_sdk;

use fastcgi_sdk::Exchange;

use std::env;
use std::error::Error;
use std::io::Write;
use std::io;
use std::net::TcpListener;

fn main() {
    safe_main().unwrap();
}

fn safe_main() -> Result<(), Box<'static + Error>> {
    let bind_address = env::args().nth(1);
    let bind_address = bind_address.as_ref().map(String::as_ref).unwrap_or("127.0.0.1:8080");

    let listener = TcpListener::bind(bind_address)?;
    loop {
        let exchange = Exchange::accept(&listener)?;
        println!("{:?}", exchange);

        let mut request_body = exchange.request_body();
        let mut response = exchange.response();
        write!(response, "HTTP/1.1 200 OK\r\n")?;
        write!(response, "Content-Type: text/plain\r\n")?;
        write!(response, "\r\n")?;
        io::copy(&mut request_body, &mut response)?;
        response.flush()?;
    }
}