# fetchurl Rust SDK
Protocol-level client for [fetchurl](https://github.com/fetchurl/spec) content-addressable cache servers.
This crate does **not** perform HTTP by itself. It provides a state machine (`FetchSession`) that drives protocol logic while you use any HTTP library for I/O.
## Install
```toml
[dependencies]
fetchurl-sdk = "0.1"
```
## Protocol
Normative behavior: **[fetchurl/spec](https://github.com/fetchurl/spec)** (`SPEC.md`).
Reference server: **[fetchurl/fetchurl](https://github.com/fetchurl/fetchurl)**.
## Usage
See crate docs and `examples/get.rs`. Clients **must** treat the server as untrusted and verify the hash (the session/verifier APIs are built for that).
## Environment
| `FETCHURL_SERVER` | Server base URL(s) per the [spec](https://github.com/fetchurl/spec/blob/main/SPEC.md). Empty/absent disables server use. |
## Development
```bash
cargo test
cargo run --example get -- --help
# Integration (Docker + image):
# FETCHURL_TEST_IMAGE=fetchurl:local cargo test --test integration
```
## Related
| [fetchurl/spec](https://github.com/fetchurl/spec) | Protocol |
| [fetchurl/fetchurl](https://github.com/fetchurl/fetchurl) | Go server |
| [fetchurl/sdk-js](https://github.com/fetchurl/sdk-js) | JavaScript SDK |
| [fetchurl/sdk-python](https://github.com/fetchurl/sdk-python) | Python SDK |