Module:VillageTest
Jump to navigation
Jump to search
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 VillagesNameTable = {} local VillagesUuidTable = {} local VillagesOwnerTable = {} 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 PV_Data = nil 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 table.insert(VillagesNameTable,VP_Data.name) -- VillagesTable.name = VP_Data.name table.insert(VillagesUuidTable,VP_Data.uuid) table.insert(VillagesOwnerTable,VP_Data.owner) --retval:addRow('Name:',VillagesNameTable,'','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 VP_Data = nil 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' }) :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 villagelistprocessor(villagelist, "Villages",retval) --mw.logObject(VillagesNameTable) local NAMEDATA = nil local UUIDDATA = nil for namenumber, VillagesNameData in ipairs(VillagesNameTable) do if VillagesNameData ~= nil then NAMEDATA = VillagesNameData mw.logObject(NAMEDATA) retval:addRow('Name:',NAMEDATA,'','icr-transparency1 icr-data') end end -- VillagesNameTable = nil -- VillagesNameData = nil -- NAMEDATA = nil for uuidnumber, VillagesUuidData in ipairs(VillagesUuidTable) do if VillagesUuidData ~= nil then UUIDDATA = VillagesUuidData mw.logObject(UUIDDATA) retval:addRow('Name:',UUIDDATA,'','icr-transparency1 icr-data') retval:addRow('Name:','TEST1','','icr-transparency1 icr-data') retval:addRow('Name:','TEST2','','icr-transparency1 icr-data') end end -- VillagesUuidTable = nil -- VillagesUuidData = nil -- UUIDDATA = nil 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