tinyhttp 0.6.0

A HTTP library with SSL and GZIP support
Documentation
#[warn(unused)]
use std::{net::TcpListener, process::Command};

use tinyhttp::prelude::*;

#[get("/api")]
fn api_get() -> &'static str {
    "Hello, there!\n"
}

#[post("/")]
fn post(msg: Option<&str>) -> String {
    if let Some(msg) = msg {
        format!("Hello, {msg}\n")
    } else {
        String::from("Body received is not a valid string!\n")
    }
}

#[post("/w")]
fn post_without_args() -> &'static str {
    "HEHE\n"
}

#[get("/wildcard/:")]
fn get_wildcard(req: Request) -> String {
    let wildcard = req.get_wildcard().unwrap();
    format!("Hello, {wildcard}\n")
}

#[post("/wildcard/:")]
fn post_wildcard(req: Request) -> String {
    let wildcard = req.get_wildcard().unwrap();
    format!("Hello, {wildcard}\n")
}

#[post("/test/returning/vec")]
fn post_return_vec() -> Vec<u8> {
    b"Hello World!".to_vec()
}

#[get("/update_html")]
fn update_html() -> &'static str {
    init_html();
    "OK"
}

#[get("/version")]
fn version() -> &'static str {
    env!("CARGO_PKG_VERSION")
}

fn init_html() {
    Command::new("wget")
        .arg("https://github.com/mateocabanal/tinyhttp-heroku-html/archive/refs/heads/main.zip")
        .output()
        .unwrap();

    println!(
        "unzip output: {}",
        String::from_utf8(
            Command::new("unzip")
                .arg("main.zip")
                .output()
                .unwrap()
                .stdout
        )
        .unwrap()
    );

    println!("UNZIPPED!");
}

fn main() {
    simple_logger::SimpleLogger::new()
        .with_level(log::LevelFilter::Info)
        .init()
        .unwrap();
    init_html();
    let socket = TcpListener::bind(":::8080").unwrap();
    let routes = Routes::new(vec![
        api_get(),
        update_html(),
        post(),
        post_without_args(),
        get_wildcard(),
        post_wildcard(),
        post_return_vec(),
        version(),
    ]);
    let config = Config::new()
        .routes(routes)
        .gzip(true)
        .mount_point("./tinyhttp-heroku-html-main");
    let http = HttpListener::new(socket, config);

    http.start();
}