Module:LearnsetsTestingData
Documentation for this module may be created at Module:LearnsetsTestingData/doc
local p = {}
local TARGET_URL = "https://wiki.pokemonrevolution.net/data/Learnsets.json"
local function tryExternalDataJson()
local ok, data, errors = pcall(function()
return mw.ext.externalData.getExternalData{
url = TARGET_URL,
format = "json"
}
end)
if not ok then
return {
method = "ExternalData (format=json)",
success = false,
message = "Lua error: " .. tostring(data)
}
end
if errors then
return {
method = "ExternalData (format=json)",
success = false,
message = "ExternalData errors: " .. table.concat(errors, " | ")
}
end
if data and data.__json then
return {
method = "ExternalData (format=json)",
success = true,
message = "__json received"
}
end
return {
method = "ExternalData (format=json)",
success = false,
message = "No __json returned (likely HTML instead of JSON)"
}
end
local function tryExternalDataRaw()
local ok, data, errors = pcall(function()
return mw.ext.externalData.getExternalData{
url = TARGET_URL
}
end)
if not ok then
return {
method = "ExternalData (auto-detect)",
success = false,
message = "Lua error: " .. tostring(data)
}
end
if errors then
return {
method = "ExternalData (auto-detect)",
success = false,
message = "ExternalData errors: " .. table.concat(errors, " | ")
}
end
if data then
return {
method = "ExternalData (auto-detect)",
success = true,
message = "Some data returned"
}
end
return {
method = "ExternalData (auto-detect)",
success = false,
message = "No data returned"
}
end
local function tryApiFetch()
local apiUrl =
"https://wiki.pokemonrevolution.net/api.php?action=query&meta=siteinfo&format=json"
local ok, data, errors = pcall(function()
return mw.ext.externalData.getExternalData{
url = apiUrl,
format = "json"
}
end)
if not ok then
return {
method = "API test (control test)",
success = false,
message = "Lua error: " .. tostring(data)
}
end
if errors then
return {
method = "API test (control test)",
success = false,
message = "ExternalData errors: " .. table.concat(errors, " | ")
}
end
if data and data.__json then
return {
method = "API test (control test)",
success = true,
message = "API works (server allows HTTP requests)"
}
end
return {
method = "API test (control test)",
success = false,
message = "API returned no JSON"
}
end
local function render(results)
local out = {}
table.insert(out, "== Learnsets.json Access Test ==")
table.insert(out, "")
table.insert(out, "Target URL: " .. TARGET_URL)
table.insert(out, "")
for _, r in ipairs(results) do
table.insert(out, "=== " .. r.method .. " ===")
table.insert(out, "* Success: " .. tostring(r.success))
table.insert(out, "* Message: " .. r.message)
table.insert(out, "")
end
return table.concat(out, "\n")
end
function p.run()
local results = {
tryExternalDataJson(),
tryExternalDataRaw(),
tryApiFetch()
}
return render(results)
end
return p