49 lines
1.6 KiB
JavaScript
49 lines
1.6 KiB
JavaScript
'use strict';
|
|
var angular = require('angular');
|
|
|
|
var traefikCoreProvider = 'traefik.core.provider';
|
|
module.exports = traefikCoreProvider;
|
|
|
|
angular
|
|
.module(traefikCoreProvider, ['ngResource'])
|
|
.factory('Providers', Providers);
|
|
|
|
/** @ngInject */
|
|
function Providers($resource, $q) {
|
|
const resourceProvider = $resource('../api/providers');
|
|
return {
|
|
get: function () {
|
|
return $q((resolve, reject) => {
|
|
resourceProvider.get()
|
|
.$promise
|
|
.then((rawProviders) => {
|
|
for (let providerName in rawProviders) {
|
|
if (rawProviders.hasOwnProperty(providerName)) {
|
|
if (!providerName.startsWith('$')) {
|
|
// BackEnds mapping
|
|
let bckends = rawProviders[providerName].backends || {};
|
|
rawProviders[providerName].backends = Object.keys(bckends)
|
|
.map(key => {
|
|
const goodBackend = bckends[key];
|
|
goodBackend.backendId = key;
|
|
return goodBackend;
|
|
});
|
|
|
|
// FrontEnds mapping
|
|
let frtends = rawProviders[providerName].frontends || {};
|
|
rawProviders[providerName].frontends = Object.keys(frtends)
|
|
.map(key => {
|
|
const goodFrontend = frtends[key];
|
|
goodFrontend.frontendId = key;
|
|
return goodFrontend;
|
|
});
|
|
}
|
|
}
|
|
}
|
|
resolve(rawProviders);
|
|
})
|
|
.catch(reject);
|
|
});
|
|
}
|
|
};
|
|
}
|