From: marcelveldt Date: Fri, 25 Oct 2019 14:25:29 +0000 (+0200) Subject: allow relative urls X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=f8cb789ab001102ade9a98d5311511b8759d66ff;p=music-assistant-server.git allow relative urls this fixes ingress support --- diff --git a/music_assistant/web/app.js b/music_assistant/web/app.js index 0a90cb66..7ac1bec9 100644 --- a/music_assistant/web/app.js +++ b/music_assistant/web/app.js @@ -68,7 +68,9 @@ const globalStore = new Vue({ showplaymenu: false, showsearchbox: false, playmenuitem: null, - server: null + server: null, + apiAddress: null, + wsAddress: null } }) Vue.prototype.$globals = globalStore; @@ -103,9 +105,15 @@ var app = new Vue({ localStorage.setItem('last_update', cur_update); window.location.reload(true); } - var loc = window.location; - console.log(loc); - this.$globals.server = loc; + // TODO: retrieve serveraddress through discovery and/or user settings + let loc = window.location; + this.$globals.server = loc.origin + loc.pathname; + this.$globals.apiAddress = this.$globals.server + 'api/'; + if (loc.protocol === "https:") { + this.$globals.wsAddress = "wss://"+ loc.host + loc.pathname + 'ws'; + } else { + this.$globals.wsAddress = "ws://"+ loc.host + loc.pathname + 'ws'; + } }, data: { }, methods: {}, diff --git a/music_assistant/web/components/player.vue.js b/music_assistant/web/components/player.vue.js index adf7e32c..b9fa0ec1 100755 --- a/music_assistant/web/components/player.vue.js +++ b/music_assistant/web/components/player.vue.js @@ -149,7 +149,7 @@ Vue.component("player", { if (!val) this.cur_player_item = null; else { - const api_url = '/api/players/' + this.active_player_id + '/queue/' + val; + const api_url = this.$globals.server + 'api/players/' + this.active_player_id + '/queue/' + val; axios .get(api_url) .then(result => { @@ -364,18 +364,10 @@ Vue.component("player", { }, connectWS() { - var loc = window.location, new_uri; - if (loc.protocol === "https:") { - new_uri = "wss:"; - } else { - new_uri = "ws:"; - } - new_uri += "/" + loc.host; - new_uri += loc.pathname + "ws"; - this.ws = new WebSocket(new_uri); + this.ws = new WebSocket(this.$globals.wsAddress); this.ws.onopen = function() { - console.log('websocket connected! ' + new_uri); + console.log('websocket connected! ' + this.$globals.wsAddress); this.createAudioPlayer(); data = JSON.stringify({message:'players', message_details: null}); this.ws.send(data); diff --git a/music_assistant/web/lib/utils.js b/music_assistant/web/lib/utils.js index e078d26d..922471c8 100644 --- a/music_assistant/web/lib/utils.js +++ b/music_assistant/web/lib/utils.js @@ -39,7 +39,7 @@ String.prototype.formatDuration = function () { return hours+':'+minutes+':'+seconds; } function toggleLibrary (item) { - var endpoint = "/api/" + item.media_type + "/"; + var endpoint = this.$globals.server + "api/" + item.media_type + "/"; item_id = item.item_id.toString(); var action = "/library_remove" if (item.in_library.length == 0) diff --git a/music_assistant/web/pages/artistdetails.vue.js b/music_assistant/web/pages/artistdetails.vue.js index 46600303..379f8354 100755 --- a/music_assistant/web/pages/artistdetails.vue.js +++ b/music_assistant/web/pages/artistdetails.vue.js @@ -73,7 +73,7 @@ var ArtistDetails = Vue.component('ArtistDetails', { }, getInfo (lazy=true) { this.$globals.loading = true; - const api_url = '/api/artists/' + this.media_id; + const api_url = this.$globals.apiAddress + 'artists/' + this.media_id; console.log(api_url + ' - ' + this.provider); axios .get(api_url, { params: { lazy: lazy, provider: this.provider }}) @@ -98,7 +98,7 @@ var ArtistDetails = Vue.component('ArtistDetails', { }, getArtistTopTracks () { - const api_url = '/api/artists/' + this.media_id + '/toptracks' + const api_url = this.$globals.apiAddress + 'artists/' + this.media_id + '/toptracks' axios .get(api_url, { params: { provider: this.provider }}) .then(result => { @@ -111,7 +111,7 @@ var ArtistDetails = Vue.component('ArtistDetails', { }, getArtistAlbums () { - const api_url = '/api/artists/' + this.media_id + '/albums' + const api_url = this.$globals.apiAddress + 'artists/' + this.media_id + '/albums' console.log('loading ' + api_url); axios .get(api_url, { params: { provider: this.provider }}) diff --git a/music_assistant/web/pages/browse.vue.js b/music_assistant/web/pages/browse.vue.js index 49bcdc8b..fbc11c68 100755 --- a/music_assistant/web/pages/browse.vue.js +++ b/music_assistant/web/pages/browse.vue.js @@ -34,7 +34,7 @@ var Browse = Vue.component('Browse', { methods: { getItems () { this.$globals.loading = true - const api_url = '/api/' + this.mediatype; + const api_url = this.$globals.apiAddress + this.mediatype; axios .get(api_url, { params: { offset: this.offset, limit: 50, provider: this.provider }}) .then(result => { diff --git a/music_assistant/web/pages/config.vue.js b/music_assistant/web/pages/config.vue.js index 85107552..74582dcb 100755 --- a/music_assistant/web/pages/config.vue.js +++ b/music_assistant/web/pages/config.vue.js @@ -106,7 +106,7 @@ var Config = Vue.component('Config', { methods: { getConfig () { axios - .get('/api/config') + .get(this.$globals.apiAddress + 'config') .then(result => { this.conf = result.data; }) @@ -118,7 +118,7 @@ var Config = Vue.component('Config', { console.log(key + "/" + subkey + " changed!"); console.log(newvalue); axios - .post('/api/config/'+key+'/'+subkey, newvalue) + .post(this.$globals.apiAddress + 'config/'+key+'/'+subkey, newvalue) .then(result => { console.log(result); if (result.data.restart_required) @@ -129,7 +129,7 @@ var Config = Vue.component('Config', { }); }, getPlayers () { - const api_url = '/api/players'; + const api_url = this.$globals.apiAddress + 'players'; axios .get(api_url) .then(result => { diff --git a/music_assistant/web/pages/playlistdetails.vue.js b/music_assistant/web/pages/playlistdetails.vue.js index b9c617d4..f96d3817 100755 --- a/music_assistant/web/pages/playlistdetails.vue.js +++ b/music_assistant/web/pages/playlistdetails.vue.js @@ -44,7 +44,7 @@ var PlaylistDetails = Vue.component('PlaylistDetails', { }, methods: { getInfo () { - const api_url = '/api/playlists/' + this.media_id + const api_url = this.$globals.apiAddress + 'playlists/' + this.media_id axios .get(api_url, { params: { provider: this.provider }}) .then(result => { @@ -57,7 +57,7 @@ var PlaylistDetails = Vue.component('PlaylistDetails', { }, getPlaylistTracks () { this.$globals.loading = true - const api_url = '/api/playlists/' + this.media_id + '/tracks' + const api_url = this.$globals.apiAddress + 'playlists/' + this.media_id + '/tracks' axios .get(api_url, { params: { offset: this.offset, limit: 25, provider: this.provider}}) .then(result => { diff --git a/music_assistant/web/pages/queue.vue.js b/music_assistant/web/pages/queue.vue.js index 9bc25a94..8440ec2c 100755 --- a/music_assistant/web/pages/queue.vue.js +++ b/music_assistant/web/pages/queue.vue.js @@ -29,7 +29,7 @@ var Queue = Vue.component('Queue', { methods: { getQueueTracks (offset, limit) { - const api_url = '/api/players/' + this.player_id + '/queue' + const api_url = this.$globals.apiAddress + 'players/' + this.player_id + '/queue' return axios.get(api_url, { params: { offset: offset, limit: limit}}) .then(response => { if (response.data.length < 1 ) diff --git a/music_assistant/web/pages/search.vue.js b/music_assistant/web/pages/search.vue.js index 996c01ef..fd86688e 100755 --- a/music_assistant/web/pages/search.vue.js +++ b/music_assistant/web/pages/search.vue.js @@ -126,7 +126,7 @@ var Search = Vue.component('Search', { if (this.searchQuery) { this.$globals.loading = true; console.log(this.searchQuery); - const api_url = '/api/search' + const api_url = this.$globals.apiAddress + 'search' console.log('loading ' + api_url); axios .get(api_url, { diff --git a/music_assistant/web/pages/trackdetails.vue.js b/music_assistant/web/pages/trackdetails.vue.js index e8f08963..3b428732 100755 --- a/music_assistant/web/pages/trackdetails.vue.js +++ b/music_assistant/web/pages/trackdetails.vue.js @@ -46,7 +46,7 @@ var TrackDetails = Vue.component('TrackDetails', { methods: { getInfo () { this.$globals.loading = true; - const api_url = '/api/tracks/' + this.media_id + const api_url = this.$globals.apiAddress + 'tracks/' + this.media_id axios .get(api_url, { params: { provider: this.provider }}) .then(result => { @@ -60,7 +60,7 @@ var TrackDetails = Vue.component('TrackDetails', { }); }, getTrackVersions () { - const api_url = '/api/search'; + const api_url = this.$globals.apiAddress + 'search'; var searchstr = this.info.artists[0].name + " - " + this.info.name axios .get(api_url, { params: { query: searchstr, limit: 50, media_types: 'tracks', online: true}})