react-run 0.3.1

Run React code snippets/components from your command-line without config
use colored::Colorize;
use open::that;
use std::{io::prelude::*, net};

pub async fn serve(app: &str, addr: &str, nobrowser: bool) {
    let listener = net::TcpListener::bind(&addr)
        .unwrap_or_else(|e| panic!("Adders \"{}\" is already used: {}", addr, e));

    let url = format!("http://{}", addr);

    println!("{}{}", "Listening on ".blue(), url.cyan());

    if nobrowser {
        that(url).unwrap_or_else(|e| eprintln!("Failed to open your default browser: {}", e));
    };

    for stream in listener.incoming() {
        handle_connection(stream.unwrap(), app);
    }
}

fn handle_connection(mut stream: net::TcpStream, app: &str) {
    let _bytes_proceeded = stream
        .read(&mut [0; 1024])
        .unwrap_or_else(|e| panic!("Failed to read from stream: {}", e));

    let response = format!(
        "HTTP/1.1 200 OK\r\nContent-Length: {}\r\n\r\n{}",
        app.len(),
        app
    );

    stream
        .write_all(response.as_bytes())
        .unwrap_or_else(|e| panic!("Could not write to stream: {}.", e));

    stream.flush().unwrap();

    println!("[{}]", "Ping!".green())
}