« Module:ZoteroAPI » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
| Ligne 2 : | Ligne 2 : | ||
local cachedData = nil -- 🔒 Cache unique pour la durée d'exécution de la page | local cachedData = nil -- 🔒 Cache unique pour la durée d'exécution de la page | ||
-- Fonction de récupération de données via un proxy local | |||
-- Fonction de récupération de données | |||
function p._fetchZoteroData(frame) | function p._fetchZoteroData(frame) | ||
-- Utiliser le cache si disponible | -- Utiliser le cache si disponible | ||
| Ligne 24 : | Ligne 17 : | ||
end | end | ||
-- | -- Récupérer les données depuis une page locale de notre wiki | ||
local | local proxyPage = "MediaWiki:ZoteroData/" .. itemKey | ||
local proxyContent = mw.title.new(proxyPage).content | |||
if not proxyContent or proxyContent == "" then | |||
if not | |||
return nil | return nil | ||
end | end | ||
-- Décoder le JSON | -- Décoder le JSON stocké dans la page proxy | ||
local success, decoded = pcall(mw.text.jsonDecode, | local success, decoded = pcall(mw.text.jsonDecode, proxyContent) | ||
if not success or not decoded then | if not success or not decoded then | ||
| Ligne 42 : | Ligne 32 : | ||
end | end | ||
-- | -- Stocker dans le cache | ||
if | cachedData = decoded | ||
return cachedData | |||
end | |||
-- Fonction pour créer une page proxy (à utiliser par les administrateurs) | |||
function p.createProxyPage(frame) | |||
local itemKey = frame.args[1] | |||
local jsonData = frame.args[2] | |||
if not itemKey or not jsonData then | |||
return "Erreur: itemKey et jsonData sont requis" | |||
end | |||
-- Vérifier que le JSON est valide | |||
local success, _ = pcall(mw.text.jsonDecode, jsonData) | |||
if not success then | |||
return "Erreur: JSON invalide" | |||
end | end | ||
return | -- Afficher le contenu à copier dans une page MediaWiki:ZoteroData/<itemKey> | ||
return "Pour créer la page proxy, copiez le JSON suivant dans la page [[MediaWiki:ZoteroData/" .. | |||
itemKey .. "]]:\n\n<pre>" .. jsonData .. "</pre>" | |||
end | end | ||
-- Fonction de débogage pour | -- Fonction de débogage pour vérifier si une page proxy existe | ||
function p. | function p.checkProxyPage(frame) | ||
local itemKey = frame and frame.args[1] | local itemKey = frame and frame.args[1] | ||
| Ligne 60 : | Ligne 65 : | ||
end | end | ||
local | local proxyPage = "MediaWiki:ZoteroData/" .. itemKey | ||
local pageTitle = mw.title.new(proxyPage) | |||
local | |||
if not | if not pageTitle.exists then | ||
return " | return "La page proxy " .. proxyPage .. " n'existe pas" | ||
end | end | ||
return "La page proxy " .. proxyPage .. " existe et contient " .. | |||
#pageTitle.content .. " caractères" | |||
end | end | ||
-- | -- Les autres fonctions restent identiques | ||
function p.debugResult(frame) | function p.debugResult(frame) | ||
local d = p._fetchZoteroData(frame) | local d = p._fetchZoteroData(frame) | ||
| Ligne 89 : | Ligne 88 : | ||
table.insert(out, "✔ Auteur : " .. (d.firstName or '') .. " " .. (d.lastName or '')) | table.insert(out, "✔ Auteur : " .. (d.firstName or '') .. " " .. (d.lastName or '')) | ||
return table.concat(out, "\n") | return table.concat(out, "\n") | ||
end | end | ||
| Ligne 167 : | Ligne 129 : | ||
local d = p._fetchZoteroData(frame) | local d = p._fetchZoteroData(frame) | ||
return d and d.lastName or '' | return d and d.lastName or '' | ||
end | end | ||
return p | return p | ||