import Service, { inject as service } from '@ember/service'; import C from 'shared/utils/constants'; import { computed } from '@ember/object'; export default Service.extend({ 'tab-session': service('tab-session'), settings: service(), app: service(), absolute: computed(`settings.${ C.SETTING.API_HOST }`, 'app.apiServer', function() { let setting = this.get(`settings.${ C.SETTING.API_HOST }`); if ( setting && setting.indexOf('http') !== 0 ) { setting = `http://${ setting }`; } let url = setting || this.get('app.apiServer'); // If the URL is relative, add on the current base URL from the browser if ( url.indexOf('http') !== 0 ) { url = `${ window.location.origin }/${ url.replace(/^\/+/, '') }`; } // URL must end in a single slash url = `${ url.replace(/\/+$/, '') }/`; return url; }), host: computed('absolute', function() { var a = document.createElement('a'); a.href = this.get('absolute'); return a.host; }), origin: computed('absolute', function() { var a = document.createElement('a'); a.href = this.get('absolute'); return a.origin; }), api: computed('absolute', 'app.apiEndpoint', function() { // Strip trailing slash off of the absoluteEndpoint var base = this.get('absolute').replace(/\/+$/, ''); // Add a single slash base += '/'; var current = this.get('app.apiEndpoint').replace(/^\/+/, ''); var authBase = `${ window.location.origin }/`; return { auth: { current: authBase + current, }, display: { current: base + current, }, }; }), });