cs-mpx-dataservice
Version:
MPX Dataservices
73 lines (62 loc) • 2.34 kB
JavaScript
/**
* Created by paul.rangel on 4/27/15.
*
* Based on the endpoint service from Tim Barker in the NBCNews Scheduler UI project see
* //depot/ConsultingServices/Customers/NBCNews/SchedulerUI/main/js/services/endpoint.js
*
*/
var q = require("q");
var rawGet = require("./rawGet");
var parseResolveDomainResponse = require("./parseResolveDomainResponse");
var resolveRegistryDomainUrl = require("./resolveRegistryDomainUrl");
var createEndpoint = require("./createEndpoint");
var _account, _token, _endpoints = {}, _registryServiceSchema = '1.1', _initialized = false;
var _load = function() {
var deferred = q.defer();
var params = {
'schema' : _registryServiceSchema,
'form' : 'json',
'token' : _token,
'account': _account,
'_accountId' : _account
};
var url = resolveRegistryDomainUrl(undefined, _account);
rawGet(url, params).then(function(data) {
if (data.hasOwnProperty('resolveDomainResponse')) {
var registry = data['resolveDomainResponse'];
var endpoints = parseResolveDomainResponse(registry, _endpoints);
if(!endpoints) {
deferred.reject({code:0, message:'Unable to connect to Registry Service.', url:url})
} else {
_initialized = true;
deferred.resolve(endpoints);
}
} else {
deferred.reject({code:0, message:'Unable to connect to Registry Service.', url:url})
}
}, function(error) {
deferred.reject(error);
});
return deferred.promise;
};
module.exports = {
init : function(account, token) {
_account = account;
_token = token;
return _load();
},
register : function(name, service, schema, suffix, params) {
_endpoints[name] = createEndpoint.create(service, schema, suffix, params);
},
registerDataService: function(name, service, schema, objectType) {
_endpoints[name] = createEndpoint.createDataService(service, schema, objectType);
},
getEndpoint : function(endpoint) {
if(endpoint in _endpoints) {
return _endpoints[endpoint];
}
},
getEndpoints : function() {
return _endpoints;
}
};