From 167b591d21bbb4b476da8bffc4b809c6aff18396 Mon Sep 17 00:00:00 2001 From: Niko Storni Date: Thu, 12 Mar 2020 21:43:50 +0100 Subject: [PATCH 1/4] make player url dynamic --- ui/util/lbrytv.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/ui/util/lbrytv.js b/ui/util/lbrytv.js index f2e0387a5..120e8b3af 100644 --- a/ui/util/lbrytv.js +++ b/ui/util/lbrytv.js @@ -1,7 +1,17 @@ +const { Lbryio } = require('lbryinc'); const { URL, LBRY_TV_STREAMING_API } = require('../../config'); -function generateStreamUrl(claimName, claimId, apiUrl) { - const prefix = LBRY_TV_STREAMING_API || apiUrl; +async function generateStreamUrl(claimName, claimId, apiUrl) { + let prefix = LBRY_TV_STREAMING_API || apiUrl; + try { + let localeResponse = await Lbryio.call('locale', 'get', {}, 'post'); + if (prefix.split('//').length > 1) { + prefix = prefix.replace('//', '//' + localeResponse.continent + '.'); + } + } catch (err) { + console.error(err.stack || err); + } + console.log(`${prefix}/content/claims/${claimName}/${claimId}/stream`); return `${prefix}/content/claims/${claimName}/${claimId}/stream`; } -- 2.45.3 From 2b2607df619bfa77eba16016d1d401116588cd71 Mon Sep 17 00:00:00 2001 From: Niko Storni Date: Thu, 12 Mar 2020 21:54:51 +0100 Subject: [PATCH 2/4] drop usage of async --- ui/util/lbrytv.js | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/ui/util/lbrytv.js b/ui/util/lbrytv.js index 120e8b3af..913e6179f 100644 --- a/ui/util/lbrytv.js +++ b/ui/util/lbrytv.js @@ -1,18 +1,27 @@ const { Lbryio } = require('lbryinc'); const { URL, LBRY_TV_STREAMING_API } = require('../../config'); -async function generateStreamUrl(claimName, claimId, apiUrl) { +function generateStreamUrl(claimName, claimId, apiUrl) { let prefix = LBRY_TV_STREAMING_API || apiUrl; - try { - let localeResponse = await Lbryio.call('locale', 'get', {}, 'post'); - if (prefix.split('//').length > 1) { - prefix = prefix.replace('//', '//' + localeResponse.continent + '.'); - } - } catch (err) { - console.error(err.stack || err); + if (prefix.includes('localhost')) { + return `${prefix}/content/claims/${claimName}/${claimId}/stream`; } - console.log(`${prefix}/content/claims/${claimName}/${claimId}/stream`); - return `${prefix}/content/claims/${claimName}/${claimId}/stream`; + new Promise((resolve, reject) => { + Lbryio.call('locale', 'get', {}, 'post').then(result => { + if (prefix.split('//').length > 1) { + prefix = prefix.replace('//', '//' + result.continent + '.'); + } + resolve(prefix); + }); + }) + .then(p => { + console.log(`${p}/content/claims/${claimName}/${claimId}/stream`); + return `${p}/content/claims/${claimName}/${claimId}/stream`; + }) + .catch(err => { + console.error(err.stack || err); + return `${prefix}/content/claims/${claimName}/${claimId}/stream`; + }); } function generateEmbedUrl(claimName, claimId) { -- 2.45.3 From 7afaeb8333c7d315db5d611f287d211268399867 Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Thu, 12 Mar 2020 17:46:37 -0400 Subject: [PATCH 3/4] demo with dynamic player url --- ui/util/lbrytv.js | 30 +++++++++++++----------------- ui/util/saved-passwords.js | 4 ++-- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/ui/util/lbrytv.js b/ui/util/lbrytv.js index 913e6179f..4d411aa15 100644 --- a/ui/util/lbrytv.js +++ b/ui/util/lbrytv.js @@ -1,27 +1,23 @@ const { Lbryio } = require('lbryinc'); const { URL, LBRY_TV_STREAMING_API } = require('../../config'); +const { getCookie, setCookie } = require('../../ui/util/saved-passwords'); + +const CONTINENT_COOKIE = 'continent'; function generateStreamUrl(claimName, claimId, apiUrl) { let prefix = LBRY_TV_STREAMING_API || apiUrl; - if (prefix.includes('localhost')) { - return `${prefix}/content/claims/${claimName}/${claimId}/stream`; - } - new Promise((resolve, reject) => { + const continent = getCookie(CONTINENT_COOKIE); + + if (continent && prefix.split('//').length > 1) { + prefix = prefix.replace('//', '//' + continent + '.'); + } else { Lbryio.call('locale', 'get', {}, 'post').then(result => { - if (prefix.split('//').length > 1) { - prefix = prefix.replace('//', '//' + result.continent + '.'); - } - resolve(prefix); - }); - }) - .then(p => { - console.log(`${p}/content/claims/${claimName}/${claimId}/stream`); - return `${p}/content/claims/${claimName}/${claimId}/stream`; - }) - .catch(err => { - console.error(err.stack || err); - return `${prefix}/content/claims/${claimName}/${claimId}/stream`; + const userContinent = result.continent; + setCookie(CONTINENT_COOKIE, userContinent, 1); }); + } + + return `${prefix}/content/claims/${claimName}/${claimId}/stream`; } function generateEmbedUrl(claimName, claimId) { diff --git a/ui/util/saved-passwords.js b/ui/util/saved-passwords.js index bc7946daf..3393098e9 100644 --- a/ui/util/saved-passwords.js +++ b/ui/util/saved-passwords.js @@ -10,7 +10,7 @@ const isProduction = process.env.NODE_ENV === 'production'; const maxExpiration = 2147483647; let sessionPassword; -function setCookie(name: string, value: string, expirationDaysOnWeb: number) { +export function setCookie(name: string, value: string, expirationDaysOnWeb: number) { let expires = ''; if (expirationDaysOnWeb) { let date = new Date(); @@ -27,7 +27,7 @@ function setCookie(name: string, value: string, expirationDaysOnWeb: number) { document.cookie = cookie; } -function getCookie(name: string) { +export function getCookie(name: string) { const nameEQ = name + '='; const cookies = document.cookie.split(';'); -- 2.45.3 From 6d12e0da06015a417b558ca7b0dbe790eb541056 Mon Sep 17 00:00:00 2001 From: Niko Storni Date: Thu, 12 Mar 2020 23:15:13 +0100 Subject: [PATCH 4/4] use only supported continents --- ui/util/lbrytv.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/ui/util/lbrytv.js b/ui/util/lbrytv.js index 4d411aa15..6163a17ed 100644 --- a/ui/util/lbrytv.js +++ b/ui/util/lbrytv.js @@ -12,7 +12,7 @@ function generateStreamUrl(claimName, claimId, apiUrl) { prefix = prefix.replace('//', '//' + continent + '.'); } else { Lbryio.call('locale', 'get', {}, 'post').then(result => { - const userContinent = result.continent; + const userContinent = getSupportedCDN(result.continent); setCookie(CONTINENT_COOKIE, userContinent, 1); }); } @@ -20,6 +20,16 @@ function generateStreamUrl(claimName, claimId, apiUrl) { return `${prefix}/content/claims/${claimName}/${claimId}/stream`; } +function getSupportedCDN(continent) { + switch (continent) { + case 'NA': + case 'EU': + return continent; + default: + return 'NA'; + } +} + function generateEmbedUrl(claimName, claimId) { return `${URL}/$/embed/${claimName}/${claimId}`; } -- 2.45.3