# net-cat
Minimal hand-rolled HTTP/1.1 client over `std::net::TcpStream`. Plain HTTP only in v0 (no TLS).
`net-cat` is the sixth sub-crate of a `comp-cat-rs` Servo-replacement webview runtime targeting Tauri integration. It gives `web-api-cat`'s `fetch` binding a concrete backend without pulling an external HTTP crate.
## Example
```rust
use net_cat::{Method, Request, Url};
let url = Url::parse("http://example.com/").unwrap();
let request = Request::new(Method::Get, url).with_header("Accept", "text/html");
// fetch(&request) would perform a real network call -- not exercised in
// the doctest to keep `cargo test` offline.
```
## v0 scope
- `Method` (`GET`/`POST`/`PUT`/`DELETE`/`HEAD`/`OPTIONS`/`PATCH`).
- `Url` parser (`http://host[:port]/path?query`; `https://` returns `Error::UnsupportedScheme`).
- `Headers` (case-insensitive name lookup, ordered list).
- `Request` and `Response` with status, headers, body bytes.
- `fetch(request)` -- TCP connect, write request, read until EOF (forced `Connection: close`), parse response.
- Automatic `Host`, `User-Agent`, `Content-Length` headers.
## Deferred to v0.2+
- HTTPS / TLS via `rustls` behind a feature flag.
- Connection keep-alive / pooling.
- Chunked transfer encoding (we rely on `Connection: close` + read-to-EOF).
- Redirects, cookies, streaming bodies.
- Async API.
## License
MIT OR Apache-2.0