content/hifi-content/Experiences/LoadTest/ppsCodeGenerator/v1/server_codeGetter.js
2022-02-13 23:16:46 +01:00

136 lines
No EOL
3.6 KiB
JavaScript

(function () {
var entityID;
var codes = {};
var GOOGLE_SCRIPTS_URL = "https://script.google.com/macros/s/AKfycbz9iifQui3XTCqHemf9x1CKZEffx3f7ONdVzb4YK_OtTv7cvw/exec";
// GOOGLE SHEET FUNCTIONS
function startFetchCode(onCompleteCallback, onErrorCallback) {
var params = "";
var onComplete = onCompleteCallback;
var onError = onErrorCallback;
sendRequest(GOOGLE_SCRIPTS_URL, params, onComplete, onError);
}
function sendRequest(url, paramString, onComplete, onError) {
var request = new XMLHttpRequest();
var requestURL = paramString
? url + "?" + paramString
: url;
// print("SENT PARAMS");
// print(requestURL);
request.open('GET', requestURL);
request.timeout = 10000;
request.ontimeout = onError;
request.onreadystatechange = function () { // called after load when readyState = 4
if (request.readyState === 4) {
if (onComplete) {
onComplete(request);
}
}
};
request.send();
}
function encodeURLParams(params) {
var paramPairs = [];
for (var key in params) {
paramPairs.push(key + "=" + params[key]);
}
return paramPairs.join("&");
}
function CodeGetter () {};
CodeGetter.prototype = {
remotelyCallable: [
"getCode"
],
preload: function (id) {
entityID = id;
},
getRequestCallbacks: function (sessionUUID, username) {
var _this = this;
var uuid = sessionUUID;
var onCompleteCallback = function (request) {
print("recieved code ", request.responseText);
print("uuid", uuid);
// get code
var code;
try {
code = request.responseText;
} catch (e) {
console.error("Error getting code");
}
// set username to the code
codes[username] = code;
_this.returnCode(uuid, code);
}
var onErrorCallback = function () {
_this.returnError(uuid);
}
return [
onCompleteCallback,
onErrorCallback
];
},
// params [ sessionUUID, username ]
getCode: function (id, params) {
var sessionUUID = params[0];
var username = params[1];
if (codes[username]) {
this.returnCode(codes[username]);
} else {
var callbacks = this.getRequestCallbacks(sessionUUID, username);
var onComplete = callbacks[0];
var onError = callbacks[1];
startFetchCode(onComplete, onError);
}
},
returnError: function (uuid) {
print("error", uuid);
Entities.callEntityClientMethod(
uuid,
entityID,
"displayError"
);
},
returnCode: function (uuid, code) {
print("returning code", uuid, code, entityID);
Entities.callEntityClientMethod(
uuid,
entityID,
"displayCode",
[code]
);
}
}
return new CodeGetter();
});