# Class LittleGhost::Support::HTTPClient

Documentation version: Edge

Canonical HTML: https://littleghostai.org/docs/LittleGhost/Support/HTTPClient.html

HTTPClient gives integrations a shared, bounded streaming HTTP layer. It
applies cancellation, deadlines, timeouts, and response-size limits while
yielding response chunks as they arrive.

### HTTPS defaults

HTTPS is required by default. Enabling `allow_insecure_http` can expose API
keys and model content in transit; use it only with a local development
endpoint.

## Inheritance

`LittleGhost::Support::HTTPClient < Object`

## Constants

### `DEFAULT_MAX_RESPONSE_BYTES`

Default upper bound for a complete provider response (50 MiB).

## Class methods

<a id="method-c-new"></a>
### `.new`

```ruby
.new(base_url: nil,
        open_timeout: 10,
        read_timeout: 120,
        allow_insecure_http: false,
        max_response_bytes: DEFAULT_MAX_RESPONSE_BYTES,
        max_error_body_bytes: DEFAULT_MAX_ERROR_BODY_BYTES)
```

Configures `base_url` with connection, read, and response size limits.

## Instance methods

<a id="method-i-each_chunk"></a>
### `#each_chunk`

```ruby
#each_chunk(uri:, method: :get, headers: {}, body: nil, deadline: nil,
        cancellation_token: nil, allow_insecure_http: false, label: "HTTP request")
```

Executes a bounded request and yields response chunks as they arrive.

<a id="method-i-request"></a>
### `#request`

```ruby
#request(uri:, method: :get, headers: {}, body: nil, allow_insecure_http: false,
        cancellation_token: nil, deadline: nil, label: "HTTP request", max_response_bytes: @max_response_bytes)
```

Executes a bounded request and returns the complete response body.

<a id="method-i-stream"></a>
### `#stream`

```ruby
#stream(path:, headers:, body:, cancellation_token:, deadline: nil)
```

Posts `body` and yields response chunks until completion.

Cancellation and `deadline` interrupt the request. Without a block, this
method returns an Enumerator.
