Obtenha a empresa atual do subdomínio em AngularJS

Aplicativos da Web como o slack têm o nome da empresa como um subdomínio. Isso pode ser muito útil para dar a cada empresa um espaço personalizado. Com AngularJS é realmente fácil obter o subdomínio e salvá-lo em um serviço singleton.

Primeiro, precisamos de um serviço que nos dê o subdomínio.

angular.module('app').factory('SubdomainService', [
'$location', function($location) {
var service = {};
var host = $location.host();

if (host.indexOf('.') >= 0) {
service
.company = host.split('.')[0];
}
return service;
}
]);

Por fim, precisamos apenas de um serviço simples para reter o valor.

angular.module('app').factory('CurrentCompanyService', [
'$q', 'CompanyService', 'SubdomainService', function($q, CompanyService, SubdomainService) {
var deferred = $q.defer();
CompanyService.get_by_slug(SubdomainService.company).then(function(company) {
return deferred.resolve(company);
});
return deferred.promise;
}
]);