« Module:ZoteroAPI » : différence entre les versions

Aucun résumé des modifications
Aucun résumé des modifications
Balise : Révoqué
Ligne 3 : Ligne 3 :


-- Fonction de récupération de données Zotero par itemKey
-- Fonction de récupération de données Zotero par itemKey
function p._fetchZoteroData(frame)
function p.debugRawResponse(frame)
    -- Utiliser le cache si disponible
    if cachedData then
        return cachedData
    end
   
    -- Obtenir l'itemKey depuis le paramètre
     local itemKey = frame and frame.args[1]
     local itemKey = frame and frame.args[1]
      
      
    -- Si aucun itemKey n'est fourni, retourner nil
     if not itemKey or itemKey == "" then
     if not itemKey or itemKey == "" then
         return nil
         return "Aucun itemKey fourni"
     end
     end
      
      
    -- Construire l'URL avec l'itemKey spécifique
     local url = 'https://api.zotero.org/groups/4893620/items/' .. itemKey .. '?include=data&format=json'
     local url = 'https://api.zotero.org/groups/4893620/items/' .. itemKey .. '?include=data&format=json'
      
      
Ligne 25 : Ligne 17 :
     })
     })
      
      
     if not success or not response then
     if not success then
         return nil
         return "Erreur lors de la requête: " .. tostring(response)
    end
   
    -- Traitement des différents formats possibles de réponse
    local data
   
    -- Si la réponse est une chaîne JSON, on la décode
    if type(response) == "string" then
        local ok, decoded = pcall(mw.text.jsonDecode, response)
        if not ok or type(decoded) ~= "table" then
            return nil
        end
        data = decoded
    elseif type(response) == "table" then
        -- Si c'est déjà une table, on l'utilise directement
        data = response
    else
        return nil
     end
     end
      
      
    -- Vérifier la structure des données
     if not response then
    -- Pour un itemKey spécifique, data peut être:
         return "Aucune réponse reçue"
    -- 1. L'objet directement
    -- 2. Un objet avec une propriété "data" contenant les informations
   
     if data.data then
         -- Si la structure est { data: {...} }
        cachedData = data.data
    else
        -- Si la structure est l'objet directement
        cachedData = data
     end
     end
      
      
     return cachedData
    -- Afficher le type et le contenu brut
     return "Type: " .. type(response) .. "\n\nContenu: " .. tostring(response)
end
end