lucent/http module
Sends HTTP/HTTPS requests.
const http = require("lucent/http");
Members
http.request()
Sends an HTTP request and returns its response. Requests cancel automatically when the script stops.
http.request(url: string | URL, options?: HttpRequestOptions): Effect.Effect<HttpResponse, HttpError>
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
url |
string | URL |
|||
options |
HttpRequestOptions |
Returns: HttpResponse
Errors: HttpError
Example
const http = require("lucent/http");
const script = require("lucent/script");
module.exports = function* () {
const response = yield* http.request("https://example.com/events", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ event: "finished" }),
timeout: "15 seconds",
});
if (!response.ok) return yield* script.stop(`HTTP ${response.status}`);
yield* script.log(yield* response.json());
};
Example
Continue when an optional request times out.
const http = require("lucent/http");
const script = require("lucent/script");
const { Effect } = require("effect");
module.exports = function* () {
yield* Effect.catch(
http.request("https://example.com", { timeout: "5 seconds" }),
(error) => {
if (error instanceof http.HttpError && error.reason === "timeout") {
return script.log("Request timed out. Continuing without the response.");
}
return Effect.fail(error);
},
);
};