-- Chargement de la bibliothèque Lua pour effectuer des requêtes HTTP
local http = require("socket.http")
local json = require("json")

-- Fonction pour effectuer une requête HTTP et renvoyer le contenu JSON en tant que tableau
function getJsonFromUrl(url)
    local response = http.request(url) -- Effectue la requête HTTP
    return json.decode(response) -- Décode la réponse JSON en tant que tableau
end

-- Fonction récursive pour rechercher une valeur dans un tableau multidimensionnel
function searchValueInTable(value, tbl)
    for k, v in pairs(tbl) do
        if v == value then
            return k -- Retourne la clé si la valeur est trouvée
        elseif type(v) == "table" then
            local result = searchValueInTable(value, v) -- Appel récursif si la valeur est un tableau
            if result then
                return k .. "." .. result -- Retourne la clé trouvée concaténée avec la clé actuelle
            end
        end
    end
    return nil -- Retourne nil si la valeur n'est pas trouvée
end

-- Exemple d'utilisation
local url = "http://api.openweathermap.org/data/2.5/weather?q=La gacilly,fr&APPID=feba3f4d926db3b358a25ec782bd1c8b&lang=FR&units=metric" -- URL à appeler
local jsonData = getJsonFromUrl(url) -- Appel de la fonction pour obtenir le tableau JSON

-- Affichage du contenu du tableau JSON
for k, v in pairs(jsonData) do
    print(k, v)
end

-- Recherche d'une valeur spécifique dans le tableau JSON
local searchValue = "valeurRecherchee"
local searchResult = searchValueInTable(searchValue, jsonData)

if searchResult then
    print("La valeur", searchValue, "a été trouvée à la clé", searchResult)
else
    print("La valeur", searchValue, "n'a pas été trouvée dans le tableau")
end

