linagora-rse
Version:
92 lines (76 loc) • 2.66 kB
JavaScript
;
angular.module('esn.appstore')
.factory('AppstoreRestangular', function(Restangular, httpConfigurer) {
var restangularInstance = Restangular.withConfig(function(RestangularConfigurer) {
RestangularConfigurer.setFullResponse(true);
});
httpConfigurer.manageRestangular(restangularInstance, '/appstore/api');
return restangularInstance;
})
.factory('disableService', function() {
function disableFn(target, array) {
if (!array || !array.length) {
return false;
}
return array.some(function(element) {
var targetToCompare = element.target || element;
return angular.equals(targetToCompare, target);
});
}
return disableFn;
})
.factory('applicationService', function() {
function isDomainLevel(application) {
return application && application.domainInjections && application.domainInjections.length !== 0;
}
return {
isDomainLevel: isDomainLevel
};
})
.factory('appstoreAPI', function(AppstoreRestangular, fileAPIService) {
function get(id) {
return AppstoreRestangular.one('apps', id).get();
}
function list(query) {
return AppstoreRestangular.all('apps').getList(query);
}
function create(application) {
return AppstoreRestangular.all('apps').post(application);
}
function deploy(id, target, version) {
var body = { target: target, version: version };
return AppstoreRestangular.one('apps', id).one('deploy').customPUT(body);
}
function updeploy() {
throw new Error('Not implemented yet');
}
function undeploy(id, target) {
return AppstoreRestangular.one('apps', id).one('undeploy').customPUT(target);
}
function install(id, target) {
return AppstoreRestangular.one('apps', id).one('install').customPUT(target);
}
function uninstall(id, target) {
return AppstoreRestangular.one('apps', id).one('uninstall').customPUT(target);
}
function uploadAvatar(id, blob, mime) {
var url = '/appstore/api/apps/' + id + '/avatar';
return fileAPIService.uploadBlob(url, blob, mime, blob.size);
}
function uploadArtifact(id, file, version) {
var url = '/appstore/api/apps/' + id + '/artifact';
return fileAPIService.uploadFile(url, file, file.type, file.size, {version: version});
}
return {
create: create,
list: list,
get: get,
deploy: deploy,
updeploy: updeploy,
undeploy: undeploy,
install: install,
uninstall: uninstall,
uploadAvatar: uploadAvatar,
uploadArtifact: uploadArtifact
};
});