StallBoard/LSL/raw/KVPDailyBkpTesting.lsl

112 lines
3.6 KiB
Text
Executable file

#include "variables.lsl"
#include "functions.lsl"
integer g_iTotalKeys;
integer g_iProcessedKeys;
integer Percent(integer I, integer M)
{
return I*100/M;
}
string Progress(integer iProg){
// 64 chars max, must account for the brackets, percent sign, and the numbers.
integer iMax = 32;
iMax -= 2; // Brackets
iMax -= 6; // Numbers, spaces, % sign
integer i=0;
string sFinal = "[";
float fProg = (float)("0."+(string)iProg);
if(iProg>=100)fProg=1.0;
if(iProg<10)fProg=(float)("0.0"+(string)iProg);
integer pos = llFloor(iMax * fProg);
for(i=0;i<=iMax;i++){
if(i < pos) sFinal += "█";
else if(i == pos)sFinal += ">";
else sFinal += "░";
}
sFinal += "] "+(string)iProg+"%";
return sFinal;
}
SET_HOVER()
{
llSetText("* BACKING UP TEST *\n"+(string)g_iProcessedKeys+"/"+(string)g_iTotalKeys+"\n"+Progress(Percent(g_iProcessedKeys, g_iTotalKeys)), <1,0,0>,1);
}
string g_sLastDate;
default
{
state_entry()
{
llSetTimerEvent(60);
}
dataserver(key kID, string sData)
{
if(HasDSRequest(kID)!=-1)
{
list lMeta = GetMetaList(kID);
if(llList2String(lMeta,0) == "count")
{
g_iTotalKeys = (integer)llGetSubString(sData,2,-1);
g_iProcessedKeys = 0;
SET_HOVER();
llSleep(0.25);
UpdateDSRequest(kID, llKeysKeyValue(g_iProcessedKeys, 1), "get_key_name");
}else if(llList2String(lMeta,0) == "get_key_name")
{
llSleep(0.25);
UpdateDSRequest(kID, llReadKeyValue(llGetSubString(sData,2,-1)), SetDSMeta(["read_value", llGetSubString(sData,2,-1)]));
} else if(llList2String(lMeta,0) == "read_value"){
string sKey = llList2String(lMeta,1);
string sValue = llStringToBase64(llGetSubString(sData,2,-1));
DeleteDSReq(kID);
llSleep(0.5);
UpdateDSRequest(NULL, llHTTPRequest("https://api.zontreck.com/zni/SLKVPStoreTesting.php", [HTTP_METHOD, "POST", HTTP_MIMETYPE, "application/json"], llList2Json(JSON_OBJECT,["op","set", "id", sKey, "val", sValue])), "sv");
g_iProcessedKeys++;
SET_HOVER();
llSleep(0.5);
if(g_iProcessedKeys <= g_iTotalKeys-1)
UpdateDSRequest(NULL, llKeysKeyValue(g_iProcessedKeys,1), "get_key_name");
else {
llSleep(10);
//DeleteDSReq(kID);
llSetText("** Daily Backup Testing **\nLast Completed: "+g_sLastDate, <0,1,0>, 0.5);
}
}
}
}
timer()
{
if(llGetDate()!=g_sLastDate)
{
g_sLastDate = llGetDate();
llRegionSay(5, "backup");
llSleep(30);
llRegionSay(5, "restore9f");
llSetText("Please Stand By\nPerforming daily KVP store backup",<1,0,0>,1);
UpdateDSRequest(NULL, llHTTPRequest("https://api.zontreck.com/zni/SLKVPStoreTesting.php", [HTTP_METHOD, "POST", HTTP_MIMETYPE, "application/json"], llList2Json(JSON_OBJECT,["op","clear"])), "sv");
llSleep(10);
UpdateDSRequest(NULL, llKeyCountKeyValue(), "count");
}
}
http_response(key k,integer s,list m,string b)
{
if(HasDSRequest(k)!=-1){
DeleteDSReq(k);
list lTmp = llParseString2List(b,[";;",";"],[]);
if(llList2String(lTmp,1) != "OK"){
llSay(0, "ERROR ("+(string)s+"): "+b);
}
}
}
}