hutc 0.1.0

Simple af rest api testing client using lua
---@meta
--[[
    AUTO-GENERATED FILE - DO NOT EDIT

    Generated by: hutc init
    Purpose: Provides type definitions and autocomplete for Lua tests.
]]

---Simple key-value map used for headers, query params, and form values.
---@alias StringMap table<string, string>

---HTTP response returned by request execution methods.
---@class HttpResponse
---Numeric HTTP status code.
---@field status integer
---`true` when status is in the `2xx` range.
---@field ok boolean
---Raw response body as text.
---@field body string
---Final response URL after redirects.
---@field url string
---Total request duration in milliseconds.
---@field duration_ms integer
---Response headers by header name.
---@field headers StringMap
---Parsed JSON when body is valid JSON.
---@field json? any

---HTTP client used to set defaults and create request builders.
---@class HttpClient
HttpClient = {}

---Set a base URL used by `RequestBuilder:path(...)`.
---@param url string
---@return nil
function HttpClient:base_url(url) end

---Create a new request builder bound to this client.
---@return RequestBuilder
function HttpClient:req() end

---Fluent request builder for composing and sending HTTP requests.
---@class RequestBuilder
RequestBuilder = {}

---Set request path (combined with client base URL if present).
---@param path string
---@return RequestBuilder
function RequestBuilder:path(path) end

---Set an absolute URL (takes precedence over `:path(...)`).
---@param url string
---@return RequestBuilder
function RequestBuilder:url(url) end

---Set one request header.
---@param key string
---@param value string
---@return RequestBuilder
function RequestBuilder:header(key, value) end

---Set multiple request headers at once.
---@param headers StringMap
---@return RequestBuilder
function RequestBuilder:headers(headers) end

---Set one query parameter.
---@param key string
---@param value string
---@return RequestBuilder
function RequestBuilder:query(key, value) end

---Set multiple query parameters at once.
---@param query StringMap
---@return RequestBuilder
function RequestBuilder:queries(query) end

---Set plain text request body.
---@param body string
---@return RequestBuilder
function RequestBuilder:body(body) end

---Set raw bytes request body from a Lua string.
---@param body string
---@return RequestBuilder
function RequestBuilder:body_bytes(body) end

---Set JSON request body from a raw JSON string.
---@param raw_json string
---@return RequestBuilder
function RequestBuilder:json(raw_json) end

---Set URL-encoded form fields.
---@param form StringMap
---@return RequestBuilder
function RequestBuilder:form(form) end

---Set request timeout in milliseconds.
---@param timeout_ms integer
---@return RequestBuilder
function RequestBuilder:timeout_ms(timeout_ms) end

---Set `Authorization: Bearer <token>`.
---@param token string
---@return RequestBuilder
function RequestBuilder:bearer(token) end

---Execute request as `GET`.
---@return HttpResponse
function RequestBuilder:get() end

---Execute request as `POST`.
---@return HttpResponse
function RequestBuilder:post() end

---Execute request as `PUT`.
---@return HttpResponse
function RequestBuilder:put() end

---Execute request as `PATCH`.
---@return HttpResponse
function RequestBuilder:patch() end

---Execute request as `DELETE`.
---@return HttpResponse
function RequestBuilder:delete() end

---Execute request with current/default method (`GET` by default).
---@return HttpResponse
function RequestBuilder:send() end

---Assertion helper returned by `expect(...)`.
---@class Expect
Expect = {}

---Attach a custom failure message to the assertion.
---@param message string
---@return Expect
function Expect:msg(message) end

---Assert that actual value equals expected value.
---@param expected any
---@return nil
function Expect:to_equal(expected) end

---Assert that actual value does not equal expected value.
---@param expected any
---@return nil
function Expect:to_not_equal(expected) end

---Assert that value is not `nil`.
---@return nil
function Expect:to_exist() end

---Register a test case.
---@param name string
---@param fn fun()
---@return nil
function test(name, fn) end

---Create an assertion object for a value.
---@param value any
---@return Expect
function expect(value) end

---Create a new HTTP client.
---@return HttpClient
function http() end

---Print debug values to stdout.
---@param ... any
---@return nil
function log(...) end