// http.vr — HTTP client (part of the VuurRaaf stdlib).
//
//   import http
//   let res = http.get("https://api.example.com/status")
//   println(str(res.status))
//   println(res.body)
//
// http.get / http.post return a struct with `status` (int) and `body`
// (string). Network failures (DNS, refused, timeout) throw, so they can be
// caught with try/catch; HTTP-level errors (404, 500) are normal responses.

fn get(url) {
	return http_get(url)
}

fn post(url, data) {
	return http_post(url, data)
}

// get_text returns just the response body as a string.
fn get_text(url) {
	return http_get(url).body
}

// request sends any method with custom headers (a {name: value} struct) and
// a timeout in milliseconds, and returns {status, body}. A timeout <= 0 uses
// the default (30s). Network failures throw; HTTP errors are normal responses.
fn request(method, url, data, headers, timeout_ms) {
	return http_req(method, url, data, headers, timeout_ms)
}

fn get_with_headers(url, headers) {
	return http_req("GET", url, "", headers, 0)
}

fn post_with_headers(url, data, headers) {
	return http_req("POST", url, data, headers, 0)
}

fn get_timeout(url, timeout_ms) {
	return http_req("GET", url, "", {}, timeout_ms)
}

fn post_timeout(url, data, timeout_ms) {
	return http_req("POST", url, data, {}, timeout_ms)
}
