Module:VillageTest: Difference between revisions
Jump to navigation
Jump to search
(Testing for Possible Memory Usage issue) |
(Really unstable testing version) |
||
| Line 35: | Line 35: | ||
end | end | ||
--[[ | |||
WE CREATE the TABLES HERE FOR THE MODULE TO STORE STUFF IN | |||
DO NOT REMOVE THE TABLES SINCE THEY SERVE THE PURPOSE OF STORING THE DATA SO THAT | |||
MEDIAWIKI CAN UNLOAD EXTENSIONS FROM MEROY BEFORE WE PROCESS THE DATA | |||
]] | |||
local VillagesTable = {} | |||
| Line 85: | Line 91: | ||
if type(VP_Data) == "table" and VP_Data.name and VP_Data.uuid and VP_Data.owner then | if type(VP_Data) == "table" and VP_Data.name and VP_Data.uuid and VP_Data.owner then | ||
local VP_Data_Local = VP_Data.name | --local VP_Data_Local = VP_Data.name | ||
local VP_UUID_Local = VP_Data.uuid | --local VP_UUID_Local = VP_Data.uuid | ||
local VP_OWNER_LOCAL = VP_Data.owner | --local VP_OWNER_LOCAL = VP_Data.owner | ||
VillagesTable.name = VP_Data.name | |||
VillagesTable.uuid = VP_Data.uuid | |||
VillagesTable.owner = VP_Data.owner | |||
-- retval:addRow('Name:',VP_Data_Local,'','icr-transparency1 icr-data') | |||
-- retval:addRow('UUID',VP_UUID_Local,'','icr-transparency1 icr-data') | -- retval:addRow('UUID',VP_UUID_Local,'','icr-transparency1 icr-data') | ||
-- retval:addRow('OWNER UUID',VP_OWNER_LOCAL,'','icr-transparency1 icr-data') | -- retval:addRow('OWNER UUID',VP_OWNER_LOCAL,'','icr-transparency1 icr-data') | ||
elseif type(VP_Data) == "string" or VP_Data == nil then | elseif type(VP_Data) == "string" or VP_Data == nil then | ||
| Line 171: | Line 177: | ||
villagehelper(playerVillages.__json.data.assistant, "Assistant",retval) | villagehelper(playerVillages.__json.data.assistant, "Assistant",retval) | ||
elseif infoboxtype == "villagelist" then | elseif infoboxtype == "villagelist" then | ||
for i, VillagesData in ipairs(VillagesTable) do | |||
if VillagesData ~= nil then | |||
if VillagesData == VillagesData.name and VillagesData.uuid and VillagesData.owner then | |||
retval.addRow('Name:',VillagesData.name,'','icr-transparency1 icr-data') | |||
retval.addRow('Name:',VillagesData.uuid,'','icr-transparency1 icr-data') | |||
retval.addRow('Name:',VillagesData.owner,'','icr-transparency1 icr-data') | |||
end | |||
end | |||
end | |||
villagelistprocessor(villagelist, "Villages",retval) | villagelistprocessor(villagelist, "Villages",retval) | ||
Revision as of 10:50, 31 January 2025
Documentation for this module may be created at Module:VillageTest/doc
local VillageTest = {}
local capiunto = require 'capiunto'
--local externalData = require('externaldata')
--[ Thecow275's WikiStats V2 VIllages MODULE PROTOTYPE ]
--[ Nicknamed: UUID and J-Village Update]
local function preprocessArg(s)
if not s then
return nil
end
s = s:match('^%s*(.-)%s*$') --trim whitespace
if s == '' then
return nil
else
return s
end
end
local debug = 0;
function VillageTest.debug(frame)
debug = 1;
VillageTest.main(
mw.getCurrentFrame():newChild{
title = "Module:VillageTest",
args ={"thecow275","villagelist"}
}
)
end
--[[
WE CREATE the TABLES HERE FOR THE MODULE TO STORE STUFF IN
DO NOT REMOVE THE TABLES SINCE THEY SERVE THE PURPOSE OF STORING THE DATA SO THAT
MEDIAWIKI CAN UNLOAD EXTENSIONS FROM MEROY BEFORE WE PROCESS THE DATA
]]
local VillagesTable = {}
function villagehelper(PV_Input, PV_Name, retval)
local PV_Input = PV_Input
local PV_Name = PV_Name
local retval = retval
retval:addHeader(PV_Name)
-- mw.log(' DATA FOR: '..PV_Name..':')
for i, PV_Data in ipairs(PV_Input) do --[[ For Example: playerVillages.__json.data.member ]]--
--mw.log('villagehelper iterations: '..i)
--mw.logObject(PV_Data)
if PV_Data ~= nil then
if type(PV_Data) == "table" and PV_Data.village then
--mw.logObject(PV_Data.village)
-- mw.log('SUCCESS: PV_Data is a Table')
local PV_Data_Local = PV_Data.village
retval:addRow('',PV_Data_Local,'','icr-transparency1 icr-data')
elseif type(PV_Data) == "string" or PV_Data == nil then
-- mw.logObject(PV_Data)
--local PV_Data_Local = 'ERROR: API FAILURE'
-- mw.log('ERROR: PV_Data is a String or nil, Supposed to be a Table')
end
elseif PV_Data == nil then
-- mw.log('ERROR PV_Data is nil ABORTING')
retval:addRow('','API ERROR RETURNING NIL','','icr-transparencry1 icr-data')
end
end
end
function villagelistprocessor(VP_Input, VP_Name, retval)
local VP_Input = VP_Input
local VP_Name = VP_Name
local retval = retval
retval:addHeader(VP_Name)
for i, VP_Data in ipairs(VP_Input) do
if VP_Data ~= nil then
if type(VP_Data) == "table" and VP_Data.name and VP_Data.uuid and VP_Data.owner then
--local VP_Data_Local = VP_Data.name
--local VP_UUID_Local = VP_Data.uuid
--local VP_OWNER_LOCAL = VP_Data.owner
VillagesTable.name = VP_Data.name
VillagesTable.uuid = VP_Data.uuid
VillagesTable.owner = VP_Data.owner
-- retval:addRow('Name:',VP_Data_Local,'','icr-transparency1 icr-data')
-- retval:addRow('UUID',VP_UUID_Local,'','icr-transparency1 icr-data')
-- retval:addRow('OWNER UUID',VP_OWNER_LOCAL,'','icr-transparency1 icr-data')
elseif type(VP_Data) == "string" or VP_Data == nil then
--mw.logObject(VP_Data)
mw.log('VP_Data is nil this shouldn\'t be the case')
end
elseif VP_Data == nil then
mw.log('ERROR VP_Data is nil ABORTING')
retval:addRow('','API ERROR RETURNING NIL','','icr-transparencry1 icr-data')
end
end
end
function VillageTest.main(frame)
local args = frame.args
local input = preprocessArg(args[1])
local infoboxtype = preprocessArg(args[2]) -- currently unused will be used whenever I implement more datatypes
if not input then -- CHECK FOR BLANK INPUT
return 'INPUT ERROR INPUT IS NULL'
end
if infoboxtype == "{{{2}}}" then
infoboxtype = "playervillages"
end
local uuid = '8fa8f70d-eb7d-4743-b0ad-837cdfb69f4e' --[thecow275]--
--local uuid = 'b08b6a7a-aada-4787-bb4b-07fc393ad6e5' --[QueenOfAsh]--
local villagelist = mw.ext.externalData.getExternalData({
url = "https://api.retromc.org/api/v1/village/getVillageList",
format = 'json',
data = villages
})
--mw.log('Village List API')
--mw.logObject(villagelist.villages)
--mw.logObject(villagelist.error)
local playerVillages = mw.ext.externalData.getExternalData({
url = "https://statistics.retromc.org/api/user_villages?uuid=" .. uuid,
format = 'json',
data = url
})
local retval = capiunto.create({
top = 'TESTING',
bodyClass = 'icr-DiamondCitizenBodyStyle',
topClass = 'icr-title'
})
retval:addRow('HOWDY', 'HOWDEE', '', 'icr-transparency1 icr-data')
if playerVillages.__json.data then
if infoboxtype == "playervillages" then
villagehelper(playerVillages.__json.data.member, "Member",retval)
villagehelper(playerVillages.__json.data.owner, "Owner",retval)
villagehelper(playerVillages.__json.data.assistant, "Assistant",retval)
elseif infoboxtype == "villagelist" then
for i, VillagesData in ipairs(VillagesTable) do
if VillagesData ~= nil then
if VillagesData == VillagesData.name and VillagesData.uuid and VillagesData.owner then
retval.addRow('Name:',VillagesData.name,'','icr-transparency1 icr-data')
retval.addRow('Name:',VillagesData.uuid,'','icr-transparency1 icr-data')
retval.addRow('Name:',VillagesData.owner,'','icr-transparency1 icr-data')
end
end
end
villagelistprocessor(villagelist, "Villages",retval)
end
end
--mw.logObject(villagels)
--mw.logObject(playerVillages.__json.data.member)
--mw.logObject(member.village)
--mw.logObject(playerVillages.data)
--mw.logObject(playerVillages.status)
--mw.logObject(villagelist.villages)
return retval
end
return VillageTest