in application/resources/js/awsfacade.js [231:269]
makeAPIGatewayRequest(request, callback, sync) {
// before anything, refreshCredentials if necessary
if (AWS.config.credentials && AWS.config.credentials.needsRefresh()) this.refreshSession();
let serviceDetails = null;
let URLtoCall = null;
if (!request || !request.Resource ||
!(serviceDetails = this.API_SERVICES.find((e) => { return e.Resource == request.Resource }))) {
var errorMSG = "Request is null, Request.Resource doesn't exists, or Request.Resource is invalid.";
callback(new Error(errorMSG), request);
} else {
URLtoCall = serviceDetails.URL;
let xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4) {
if (this.status == 200) {
callback(null, this.responseText);
}
else callback(this.status, this.responseText);
}
};
if (request.QueryStrings) URLtoCall = URLtoCall + "?" + request.QueryStrings;
// XMLHttpRequest.open(method, url, async); by default, async is true.
// So, by not providing "sync", we're making it true.
xhttp.open(serviceDetails.Method, URLtoCall, !sync);
if (serviceDetails.Headers) {
serviceDetails.Headers.forEach(headerSpec => {
xhttp.setRequestHeader(headerSpec.Name, headerSpec.Value);
});
};
// If authentication is required, include Authorization header.
if (serviceDetails.AuthorizationRequired) {
xhttp.setRequestHeader("Authorization", this.cognitoFacade.getSessionData().getIdToken().getJwtToken());
}
let message = null;
if (request.Parameters) message = JSON.stringify(request.Parameters);
else message = null;
xhttp.send(message);
}
};