client-ui
Version:
Testing implementation of nodeJs Backend, angular frontend, and hopefully in a way that this can be deployed to s3/cloudfront
52 lines (47 loc) • 1.67 kB
JavaScript
/* global moduleName window $ */
angular.module(moduleName).service('serviceRouter', ['$q', '$http', 'rootConstants', function ($q, $http, rootConstants) {
var self = this;
self.numTries = {
};
self.maxTries = {
default: 5
};
function getScriptMode(serviceName) {
var deferred = $q.defer();
if (rootConstants.production) {
deferred.resolve("production");
} else {
$http.get(rootConstants.server + "getServiceMode/" + serviceName)
.then(function(output) {
deferred.resolve(output.data);
}, function(error) {
deferred.reject(error.data);
});
}
return deferred.promise;
}
function getScriptContent(serviceUrl, serviceName) {
self.numTries[serviceName] = 0;
if (!self.maxTries[serviceName]) {
self.maxTries[serviceName] = self.maxTries["default"];
}
return attemptLoadFile(serviceUrl, serviceName);
}
function attemptLoadFile(filename, serviceName) {
var deferred = $q.defer();
if (self.numTries[serviceName]++ < self.maxTries[serviceName]) {
$.getScript(filename)
.done(function() {
deferred.resolve();
})
.error(function() {
deferred.resolve(attemptLoadFile(filename, serviceName));
});
} else {
deferred.reject("Could not load file");
}
return deferred.promise;
}
self.getScriptContent = getScriptContent;
self.getScriptMode = getScriptMode;
}]);