Module:VillageTest: Difference between revisions

From RetroMC
Jump to navigation Jump to search
No edit summary
(Disabling memory intensive loggin functions since it causes the module to eat the whole 50mb of memory somehow)
Line 123: Line 123:
                     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
                    mw.log("Village Number: "..i)  
                  --  mw.log("Village Number: "..i)  
                     --mw.log("UUID: ")  
                     --mw.log("UUID: ")  
                     --mw.logObject(VP_Data.uuid,'UUID')
                     --mw.logObject(VP_Data.uuid,'UUID')
Line 133: Line 133:
                     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')
                    mw.logObject(VP_Data.name,'NAME') -- We Printing the VP_Data_Local into console here
                  -- mw.logObject(VP_Data.name,'NAME') -- We Printing the VP_Data_Local into console here




Line 156: Line 156:
                 villagehelper(playerVillages.__json.data.assistant, "Assistant")
                 villagehelper(playerVillages.__json.data.assistant, "Assistant")
         elseif infoboxtype == "villagelist" then
         elseif infoboxtype == "villagelist" then
                mw.log('--------------------------------------')
            --    mw.log('--------------------------------------')
                mw.log('|                                              |')
              --  mw.log('|                                              |')
                mw.log('|    VILLAGE LIST TESTING    |')
            --  mw.log('|    VILLAGE LIST TESTING    |')
                mw.log('|                                              |')
            --  mw.log('|                                              |')
                mw.log('--------------------------------------')
              --  mw.log('--------------------------------------')
                mw.logObject(villagelistprocessor(villagelist, "Villages"))
            --  mw.logObject(villagelistprocessor(villagelist, "Villages"))
                 villagelistprocessor(villagelist, "Villages")
                 villagelistprocessor(villagelist, "Villages")
                 --mw.logObject(villagelist.__json)
                 --mw.logObject(villagelist.__json)

Revision as of 19:45, 30 January 2025

Documentation for this module may be created at Module:VillageTest/doc

local p  =  {}
local capiunto = require 'capiunto'


--[ 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 p.debug(frame)
    debug = 1;
p.main(
    mw.getCurrentFrame():newChild{
        title = "Module:VillageTest",
        args ={"thecow275","villagelist"}
    
     }
    
    )

end


function p.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

        --table.insert(villagels, "1st layer works")
        
        function villagehelper(PV_Input, PV_Name)
            local PV_Input =  PV_Input
            local PV_Name = PV_Name
            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)
            local VP_Input = VP_Input
            local VP_Name = VP_Name
            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
                  --  mw.log("Village Number: "..i) 
                    --mw.log("UUID: ") 
                    --mw.logObject(VP_Data.uuid,'UUID')
                    --mw.logObject(VP_Data.owner, 'Owner UUID')

                    

                    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')
                   -- mw.logObject(VP_Data.name,'NAME') -- We Printing the VP_Data_Local into console here


                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
        if infoboxtype == "playervillages" then
                villagehelper(playerVillages.__json.data.member, "Member")
                villagehelper(playerVillages.__json.data.owner, "Owner")
                villagehelper(playerVillages.__json.data.assistant, "Assistant")
        elseif infoboxtype == "villagelist" then
            --    mw.log('--------------------------------------')
              --  mw.log('|                                              |')
             --   mw.log('|    VILLAGE LIST TESTING    |')
             --   mw.log('|                                              |')
              --  mw.log('--------------------------------------')
             --   mw.logObject(villagelistprocessor(villagelist, "Villages"))
                villagelistprocessor(villagelist, "Villages")
                --mw.logObject(villagelist.__json)
        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 p