Referencia Técnica de la Biblioteca de Red luaHttp en Lua

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.

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" }

Etiquetas: Lua HTTP Networking URL Parsing Lua Tables

Publicado el 6-18 21:31