in functions/source/addDynamicsAccountNote-test/addDynamicsAccountNote-test.js [15:95]
function checkDynamicsWebApiUrl(event, context, callback) {
console.log(
"Validating that we have the correct URL to the Dynamics 365 Web API based on the Quick Start template parameters"
);
var dynamicsHostDomain = event["ResourceProperties"]["DynamicsHostDomain"];
console.log(
"Template parameter for Dynamics 365 Domain: " + dynamicsHostDomain
);
var dynamicsWebApiBasePath = "/api/data/v8.2";
var dynamicsRequestHeaders = {
Authorization: "Bearer " + accessToken,
Accept: "application/json"
};
var requestParams = {
host: dynamicsHostDomain,
path: dynamicsWebApiBasePath,
method: "GET",
headers: dynamicsRequestHeaders
};
https
.get(requestParams, response => {
var lookupResponseBody = "";
response.on("data", dataChunk => {
lookupResponseBody += dataChunk;
});
response.on("end", function() {
if (response.statusCode == 401) {
console.log(
"Got 401 Unauthorized response as we expect with an invalid token"
);
console.log(
"Checking WWW-Authenticate header for the requested resource to validate we are hitting the Dynamics 365 Web API"
);
var wwwAuthenticateHeader = response.headers["www-authenticate"];
var headerContainsDynamicsDomain =
wwwAuthenticateHeader &&
wwwAuthenticateHeader.indexOf(dynamicsHostDomain) > 1;
if (headerContainsDynamicsDomain) {
console.log(
"Success! WWW-Authenticate header contains Dynamics 365 Domain"
);
cfnResponse.send(event, context, cfnResponse.SUCCESS);
} else {
var failMsg =
"Please check the Dynamics 365 Domain parameter to ensure it corresponds to your Dynamics 365 instance. WWW-Authenticate header did not contain Dynamics 365 Domain: " +
wwwAuthenticateHeader;
console.error(failMsg);
cfnResponse.send(event, context, cfnResponse.FAILED, {
error: failMsg
});
}
} else {
var failMsg =
"Please check the Dynamics 365 Domain parameter to ensure it corresponds to your Dynamics 365 instance. Got non-401 response: " +
response.statusCode +
" " +
response.statusMessage;
console.error(failMsg);
cfnResponse.send(event, context, cfnResponse.FAILED, {
error: failMsg
});
}
});
})
.on("error", e => {
var failMsg =
"Please check the Dynamics 365 Domain parameter to ensure it corresponds to your Dynamics 365 instance. Error occurred: " +
e;
console.error(failMsg);
cfnResponse.send(event, context, cfnResponse.FAILED, {
error: failMsg
});
});
}