Module:VillageTest: Difference between revisions

From RetroMC
Jump to navigation Jump to search
No edit summary
No edit summary
Tag: Manual revert
 
(31 intermediate revisions by the same user not shown)
Line 1: Line 1:
local p =  {}
local VillageTest =  {}
local capiunto = require 'capiunto'
local capiunto = require 'capiunto'
--local externalData = require('externaldata')




Line 19: Line 20:
end
end


function p.main(frame)
local debug = 0;
     local args = frame.args
 
     --local input = preprocessArg(args[1])
function VillageTest.debug(frame)
  -- local datatype = preprocessArg(args[2]) -- currently unused will be used whenever I implement more datatypes
     debug = 1;
  -- local UUIDORUSER = preprocessArg(args[3]) -- Selector for if input is username OR UUID
VillageTest.main(
  -- local PlayerORVillage = preprocessArg(args[4]) -- Jesus christ argument just so you can specify if you are searching for village data YES village data
    mw.getCurrentFrame():newChild{
  -- this module will get bloated with the jvillage stuff but EHHH
        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
 
 


  --if not input then -- CHECK FOR BLANK INPUT
  --    return 'INPUT ERROR INPUT IS NULL'
    --end


     local uuid = '8fa8f70d-eb7d-4743-b0ad-837cdfb69f4e'
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
   


     local villagedata = mw.ext.externalData.getExternalData({
  if not input then -- CHECK FOR BLANK INPUT
        url = "api.retromc.org/api/v1/village/getVillageList",
      return 'INPUT ERROR INPUT IS NULL'
        format =  'json'
     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({
         url = "https://statistics.retromc.org/api/user_villages?uuid=" .. uuid,
         url = "https://statistics.retromc.org/api/user_villages?uuid=" .. uuid,
         format = 'json',
         format = 'json',
          
         data = url


     })
     })
Line 50: Line 167:
         bodyClass = 'icr-DiamondCitizenBodyStyle',
         bodyClass = 'icr-DiamondCitizenBodyStyle',
         topClass = 'icr-title'
         topClass = 'icr-title'
       
     })
     })


     retval:addRow('HOWDY', 'HOWDEE', '', 'icr-transparency1 icr-data')
     :addRow('HOWDY', 'HOWDEE', '', 'icr-transparency1 icr-data')


     local villagels = {}
      
     if playerVillages.__json.data then
     if playerVillages.__json.data then


        --table.insert(villagels, "1st layer works")
     
          
          
     
        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 i, member in ipairs(playerVillages.__json.data.member) do   --maybe this needs to be for pairs in data and then again for ipairs in owner, member and assistant ? so maybe I need to create 2 tables for this and then handle it through that ?
           
            mw.log('iterations:  '..i)
            for uuidnumber, VillagesUuidData in ipairs(VillagesUuidTable) do
            mw.logObject(member)
            local member2 = member


                for k, uhh in pairs(member2) do
                     if VillagesUuidData ~= nil then
                     retval:addRow('',uhh,'','icr-transparency1 icr-data')
                       
                  mw.log('VillageStuff? : '..k)
                        UUIDDATA = VillagesUuidData
                  mw.logObject(uhh)


                end
                        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
       
     
              
              
          
          
Line 88: Line 255:
     --mw.logObject(playerVillages.data)
     --mw.logObject(playerVillages.data)
     --mw.logObject(playerVillages.status)
     --mw.logObject(playerVillages.status)
     --return retval
     --mw.logObject(villagelist.villages)
    return retval
end
end
return p
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