Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/juancarlospaco/harpoon

HTTP Harpoon, HTTP Client
https://github.com/juancarlospaco/harpoon

async high-performance http http-client https network nim nim-lang

Last synced: about 1 month ago
JSON representation

HTTP Harpoon, HTTP Client

Awesome Lists containing this project

README

        

# HTTP Harpoon: Clandestine HTTP Client.

- Same API as stdlib `HttpClient`.
- 1 file, 0 dependencies, 300 lines, pure Nim.
- No Curl nor LibCurl dependencies.
- Async and sync client.
- Works with ARC and ORC.
- Works with `strictFuncs`.
- Uses `Uri` type for URL.
- Response has `isIpv6: bool` attribute.
- `GET` and `POST` from JSON to JSON directly.
- `downloadFile` that takes `openArray` of URLs.
- HTTP Headers can be compile-time immutable `const`.
- Proxy support, with Auth.
- Timeout support for Async and Sync.
- Option to skip parsing Headers or Status or Body, if you dont need them.
- HTTP Methods use `HttpMethod` enum, not strings. Status code use `HttpCode` not integers.
- No heavy objects, designed as a tiny `proc` attached to a vanilla `Socket`.
- Share a `Socket` with multiple clients, reuse `Socket`.
- Theres no open/close functions for the client, just call `get()` or `post()`.
- Works with Threads, Tasks, and other Async implementations.
- Uses very few symbols from stdlib, very future proof.
- `runnableExamples` with `doAssert` for everything.
- Documentation online.