reqrio 0.3.0-rc2

A lightweight, high-performance, fingerprint-based HTTP request library.
Documentation
use std::fs;
use std::io::{Read, Write};
use std::net::TcpListener;
use reqrio::SyncStream;
use reqtls::{Certificate, RsaKey, ServerConfig, ALPN};

#[tokio::main]
async fn main() {
    let listen = TcpListener::bind("0.0.0.0:7878").unwrap();
    let cert = fs::read(r"C:\Users\XLX\Desktop\xnm\1\server.crt").unwrap();
    let mut certificates = Certificate::from_pem(cert).unwrap();
    let key = fs::read(r"C:\Users\XLX\Desktop\xnm\1\server.key").unwrap();
    let pri_key = RsaKey::from_pri_pem(key).unwrap();
    loop {
        let (stream, addr) = listen.accept().unwrap();
        println!("Accepted connection from {}", addr);
        let tls_stream = SyncStream::accept(stream, ServerConfig {
            alpn: &ALPN::Http20,
            ca: &mut Certificate::none(),
            server_cert: &mut certificates,
            cert_key: &pri_key,
            verify: false,
            ca_certs: &vec![],
            key_log: None,
        });
        if let Ok(mut tls_stream) = tls_stream {
            tokio::spawn(async move {
                let mut buffer = [0; 1024];
                loop {
                    let len = tls_stream.read(&mut buffer).unwrap();
                    if len == 0 { break; }
                    println!("{}", String::from_utf8_lossy(&buffer[..len]));
                    if buffer.starts_with(b"GET") || buffer.starts_with(b"POST") {
                        tls_stream.write_all("HTTP/1.1 200 OK\r\nContent-Length: 2\r\n\r\nok".as_bytes()).unwrap();

                    }
                }
            });
        }
    }
}