stuff/advanced/http_adapters.md

# HTTP Adapters

Pillar supports multiple HTTP adapters for communicating with ClickHouse servers. This allows you to choose the best implementation for your specific requirements or environment.

## Available Adapters

Pillar comes with two built-in HTTP adapters:

1. **Tesla Mint Adapter** (default) - Uses [Tesla](https://github.com/teamon/tesla) with the [Mint](https://github.com/elixir-mint/mint) HTTP client
2. **Httpc Adapter** - Uses Erlang's built-in `:httpc` module

## Adapter Architecture

Each adapter implements the `Pillar.HttpClient.Adapter` behaviour, which requires a `post/3` function:

```elixir
@callback post(url :: String.t(), post_body :: String.t(), options :: keyword()) ::
            Pillar.HttpClient.Response.t()
            | Pillar.HttpClient.TransportError.t()
            | %{__struct__: RuntimeError, message: String.t()}
```