Module:VillageTest: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary Tag: Manual revert |
||
| (24 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
local | local VillageTest = {} | ||
local capiunto = require 'capiunto' | local capiunto = require 'capiunto' | ||
--local externalData = require('externaldata') | |||
| Line 19: | Line 20: | ||
end | end | ||
function | local debug = 0; | ||
--local | 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 | |||
local | 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({ | local playerVillages = mw.ext.externalData.getExternalData({ | ||
| Line 50: | Line 167: | ||
bodyClass = 'icr-DiamondCitizenBodyStyle', | bodyClass = 'icr-DiamondCitizenBodyStyle', | ||
topClass = 'icr-title' | topClass = 'icr-title' | ||
}) | }) | ||
:addRow('HOWDY', 'HOWDEE', '', 'icr-transparency1 icr-data') | |||
if playerVillages.__json.data then | 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 | end | ||
-- VillagesUuidTable = nil | |||
-- VillagesUuidData = nil | |||
-- UUIDDATA = nil | |||
end | |||
| Line 133: | Line 255: | ||
--mw.logObject(playerVillages.data) | --mw.logObject(playerVillages.data) | ||
--mw.logObject(playerVillages.status) | --mw.logObject(playerVillages.status) | ||
--mw.logObject(villagelist.villages) | |||
return retval | return retval | ||
end | end | ||
return | return VillageTest | ||
Latest revision as of 14:12, 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 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