El módulo personalizado luaHttp proporciona un conjunto de utilidades diseñadas para simplificar las operaciones de red, la manipulación de URLs y la transferencia de archivos en entornos Lua. A continuación, se documenta la especificación de cada interfaz disponible.
luaHttp.get(config)
Ejecuta una solicitud HTTP. A pesar de su nombre, esta función soporta el envío de datos mediante el método POST y permite descargar recursos binarios o de texto directamente al sistema de archivos local.
Parámetros
config[string | table]: Define los parámetros de la solicitud.- Si es un
string, se interpreta como la URL de destino (ej.https://api.example.com/data?id=99). - Si es un
table, permite configuraciones avanzadas:url[string, requerido]: La dirección web de destino.code[string, opcional]: Codificación de caracteres esperada (ej. "UTF-8", "GBK"). Por defecto asume UTF-8 y no distingue entre mayúsculas o minúsculas.savePath[string, opcional]: Ruta local donde guardar la respuesta. Si solo se proporciona el nombre del archivo, se almacenará en el directorio temporal.cookies[table | string, opcional]: Cabeceras de cookie (ej.{session="abc"}o"session=abc").post[table | string, opcional]: Cuerpo de la solicitud para envíos POST.
- Si es un
Valor de Retorno
[string | nil]: El código HTML o contenido de texto de la respuesta, o nil en caso de error.
-- Solicitud GET estándar
local responseText = luaHttp.get("https://status.example.com/health")
-- Solicitud compleja con POST, cookies y descarga de binario
local downloadConfig = {
url = "https://cdn.example.org/assets/texture.png",
code = "UTF-8",
savePath = "/tmp/local_texture.png",
cookies = { auth_token = "xyz789", role = "guest" },
post = { action = "retrieve", format = "raw" }
}
local downloadResult = luaHttp.get(downloadConfig)
luaHttp.upload(url, filePath, cookies)
Permite la carga de archivos locales hacia un servidor remoto.
Parámetros
url[string, requerido]: Endpoint del servidor receptor.filePath[string, requerido]: Ruta absoluta del archivo local a subir.cookies[table | string, opcional]: Datos de autenticación o sesión necesarios para autorizar la carga.
Valor de Retorno
[string | nil]: Respuesta procesada por el servidor.
local apiEndpoint = "https://storage.example.com/v2/upload"
local documentPath = "/var/data/reports/financial_q3.pdf"
local sessionData = "user_id=402;access_level=admin"
local serverReply = luaHttp.upload(apiEndpoint, documentPath, sessionData)
luaHttp.split(url)
Analiza y descompone una cadena de URL en sus componentes fundamentales para facilitar su inspección.
Parámetros
url[string, requerido]: La dirección web a procesar.
Valor de Retorno
[table]: Una tabla conteniendo las claves: protocol (http/https), host, path, url (cadena limpia sin parámetros GET) y query (tabla con los parámetros).
local target = "https://shop.example.net/catalog?category=hardware&sort=asc"
local urlParts = luaHttp.split(target)
-- Estructura resultante en urlParts:
-- protocol: "https"
-- host: "shop.example.net"
-- path: "/catalog"
-- url: "https://shop.example.net/catalog"
-- query: { category = "hardware", sort = "asc" }
luaHttp.isUrl(url)
Valida si una cadena de texto cumple con el formato estricto de una URL, exigiendo la presencia del esquema de protocolo.
Parámetros
url[string, requerido]: Texto a evaluar.
Valor de Retorno
[boolean]: true si es un formato válido, false en caso contrario.
local check1 = luaHttp.isUrl("https://developer.mozilla.org") -- Retorna: true
local check2 = luaHttp.isUrl("developer.mozilla.org") -- Retorna: false (carece de protocolo http/https)
luaHttp.queryToTable(query)
Convierte una cadena de consulta (query string) propia de una URL en una tabla de Lua estructurada en pares clave-valor.
Parámetros
query[string, requerido]: Cadena con formato de parámetros GET.
Valor de Retorno
[table]: Tabla asociativa con los parámetros extraídos.
local rawQuery = "search=processor&brand=tech&page=3"
local parsedParams = luaHttp.queryToTable(rawQuery)
-- parsedParams contendrá: { search = "processor", brand = "tech", page = "3" }