Requires: libcurl (auto-installed via minks install curl)
#include "curl"
| Method | Args | Out | Description |
|---|---|---|---|
Curl:Get |
url |
String | HTTP GET → response body |
Curl:Post |
url, body |
String | HTTP POST with body |
Curl:Put |
url, body |
String | HTTP PUT with body |
Curl:Delete |
url |
String | HTTP DELETE |
Curl:Status |
— | Number | HTTP status code of last request |
Curl:SetHeader |
key, value |
void | Set a persistent request header |
Curl:ClearHeaders |
— | void | Remove all set headers |
Curl:SetTimeout |
seconds |
void | Request timeout (default: 30) |
Throws CurlException on connection failure. See Object — Exception.
Curl:SetHeader("Authorization", "Bearer mytoken");
Curl:SetHeader("Accept", "application/json");
Var:String body;
Var:Number status;
try {
Curl:Get("https://api.example.com/users", body);
} catch (CurlException e) {
Konsol:Print("curl error: ${e.message}");
}
Curl:Status(status);
Konsol:Print("${status}: ${body}");
Curl:ClearHeaders();
| Platform | Command |
|---|---|
| Debian/Ubuntu | sudo apt install libcurl4-openssl-dev |
| Fedora/RHEL | sudo dnf install libcurl-devel |
| macOS | brew install curl |
| MSYS2 MINGW64 | pacman -S mingw-w64-x86_64-curl |
| MSYS2 UCRT64 | pacman -S mingw-w64-ucrt-x86_64-curl |
| MSYS2 CLANG64 | pacman -S mingw-w64-clang-x86_64-curl |
| MSYS2 CLANGARM64 | pacman -S mingw-w64-clang-aarch64-curl |
The Makefile auto-detects via pkg-config.
make -C curl_plugin
// test_curl.ks — Curl plugin tests
// Run: minks --plugin ./kse_curl.dll test_curl.ks
// Requires network access; uses httpbin.org as echo server.
Konsol:Print("=== Curl plugin ===");
Var:String body;
Var:Number code;
// ── GET ────────────────────────────────────────────────────────────────────────
Konsol:Print("--- GET");
Curl:Get("https://httpbin.org/get", body);
Curl:Status(code);
Konsol:Print("status : ${code}");
Konsol:Print("body : ${body}");
// ── POST ───────────────────────────────────────────────────────────────────────
Konsol:Print("--- POST");
Curl:Post("https://httpbin.org/post", "hello=world&lang=minks", body);
Curl:Status(code);
Konsol:Print("status : ${code}");
Konsol:Print("body : ${body}");
// ── PUT ────────────────────────────────────────────────────────────────────────
Konsol:Print("--- PUT");
Curl:Put("https://httpbin.org/put", "{\"key\":\"value\"}", body);
Curl:Status(code);
Konsol:Print("status : ${code}");
Konsol:Print("body : ${body}");
// ── DELETE ─────────────────────────────────────────────────────────────────────
Konsol:Print("--- DELETE");
Curl:Delete("https://httpbin.org/delete", body);
Curl:Status(code);
Konsol:Print("status : ${code}");
Konsol:Print("body : ${body}");
// ── Custom headers ─────────────────────────────────────────────────────────────
Konsol:Print("--- custom headers");
Curl:SetHeader("X-Test-Header", "minks-curl");
Curl:SetHeader("Accept", "application/json");
Curl:Get("https://httpbin.org/headers", body);
Curl:Status(code);
Konsol:Print("status : ${code}");
Konsol:Print("body : ${body}");
Curl:ClearHeaders();
// ── Status code passthrough ────────────────────────────────────────────────────
Konsol:Print("--- 404");
Curl:Get("https://httpbin.org/status/404", body);
Curl:Status(code);
Konsol:Print("status : ${code}");
Konsol:Print("--- 500");
Curl:Get("https://httpbin.org/status/500", body);
Curl:Status(code);
Konsol:Print("status : ${code}");
// ── Timeout ────────────────────────────────────────────────────────────────────
Konsol:Print("--- timeout (2s, then a real request)");
Curl:SetTimeout(2);
Curl:Get("https://httpbin.org/delay/5", body);
Curl:Status(code);
Konsol:Print("status after timeout : ${code}");
Curl:SetTimeout(30);
Curl:Get("https://httpbin.org/get", body);
Curl:Status(code);
Konsol:Print("status after restore : ${code}");
Konsol:Print("=== done ===");