makeAPIGatewayRequest()

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);
        }
    };