Les imports

Le langage Lua est riche en possibilités, mais il est volontairement minimaliste : tout n’est pas inclus dans son noyau. Par exemple, Lua ne propose pas de fonctionnalités réseau en natif. Plutôt que de réinventer la roue, on peut utiliser du code déjà écrit (et souvent bien testé) grâce au mot-clé require :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
-- Affichage de la variable http (encore vide)
print(http)
-- Chargement de la bibliothèque dans la variable locale http
local http = require("socket")
-- La variable http contient maintenant une table
print(http)
-- Affichage de la version de la bibliothèque via une variable spéciale
print(http._VERSION)

-- output :
--  nil
--  table: 0x7c5280
--  LuaSocket 3.0-rc1

Exemple complet avec téléchargement d’une page web

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
-- On charge la bibliothèque http
local http = require("socket.http")

-- Requête HTTP
local body, code = http.request("https://www.lua.org/pil/contents.html")
if not body then
  -- Si rien n’a été récupéré
  print("Erreur lors de la requête")
  return
end

-- Sauvegarde du contenu dans un fichier
local f = io.open("Contents.html", "w")
f:write(body)
f:close()

Il existe une multitude de modules Lua disponibles sur Internet, notamment via LuaRocks, le gestionnaire de paquets officiel de Lua.