ask-cli
Version:
Alexa Skills Kit (ASK) Command Line Interfaces
34 lines (31 loc) • 1.34 kB
JavaScript
const CONSTANTS = require('@src/utils/constants');
const jsonView = require('@src/view/json-view');
const Retry = require('@src/utils/retry-utility');
module.exports = {
pollExportStatus
};
/**
* Wrapper for polling smapi skill package export status.
* @param {String} exportId
* @param {Function} callback (err, lastExportStatus)
*/
function pollExportStatus(smapiClient, exportId, callback) {
const retryConfig = {
base: CONSTANTS.CONFIGURATION.RETRY.GET_PACKAGE_EXPORT_STATUS.MIN_TIME_OUT,
factor: CONSTANTS.CONFIGURATION.RETRY.GET_PACKAGE_EXPORT_STATUS.FACTOR,
maxRetry: CONSTANTS.CONFIGURATION.RETRY.GET_PACKAGE_EXPORT_STATUS.MAX_RETRY
};
const retryCall = (loopCallback) => {
smapiClient.skillPackage.getExportStatus(exportId, (pollErr, pollResponse) => {
if (pollErr) {
return loopCallback(pollErr);
}
if (pollResponse.statusCode >= 300) {
return loopCallback(jsonView.toString(pollResponse.body));
}
loopCallback(null, pollResponse);
});
};
const shouldRetryCondition = retryResponse => retryResponse.body.status === CONSTANTS.SKILL.PACKAGE_STATUS.IN_PROGRESS;
Retry.retry(retryConfig, retryCall, shouldRetryCondition, (err, res) => callback(err, err ? null : res));
}