mirror of
https://github.com/LBRYFoundation/lbry.com.git
synced 2025-08-23 17:47:26 +00:00
fixes #871
This commit is contained in:
parent
d88aca3b7e
commit
57a909d0f4
4 changed files with 79 additions and 93 deletions
|
@ -126,9 +126,8 @@ class Controller
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$router->any('/get/lbry.pre.{ext:c}', 'DownloadActions::executeGetAppPrereleaseRedirect');
|
$router->get('/releases/{repo:c}.{ext:c}', 'DownloadActions::executeDownloadReleaseAsset');
|
||||||
$router->any('/get/lbry.{ext:c}', 'DownloadActions::executeGetAppRedirect');
|
$router->get('/releases/pre/{repo:c}.{ext:c}', 'DownloadActions::executeDownloadPrereleaseAsset');
|
||||||
$router->any('/get/lbrynet.{os:c}.zip', 'DownloadActions::executeGetDaemonRedirect');
|
|
||||||
|
|
||||||
$router->get([ContentActions::URL_NEWS . '/{slug:c}?', 'news'], 'ContentActions::executeNews');
|
$router->get([ContentActions::URL_NEWS . '/{slug:c}?', 'news'], 'ContentActions::executeNews');
|
||||||
$router->get([ContentActions::URL_FAQ . '/{slug:c}?', 'faq'], 'ContentActions::executeFaq');
|
$router->get([ContentActions::URL_FAQ . '/{slug:c}?', 'faq'], 'ContentActions::executeFaq');
|
||||||
|
|
|
@ -5,26 +5,14 @@ class DownloadActions extends Actions
|
||||||
//bad, fix me!
|
//bad, fix me!
|
||||||
const ANDROID_STORE_URL = 'https://play.google.com/store/apps/details?id=io.lbry.browser';
|
const ANDROID_STORE_URL = 'https://play.google.com/store/apps/details?id=io.lbry.browser';
|
||||||
|
|
||||||
public static function executeGetAppRedirect(string $ext)
|
public static function executeDownloadPrereleaseAsset(string $repo, string $ext)
|
||||||
{
|
{
|
||||||
return Controller::redirect(GitHub::getAppDownloadUrl(OS::getOsForExtension($ext)) ?: '/get', 302);
|
return static::executeDownloadReleaseAsset($repo, $ext, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function executeGetAppPrereleaseRedirect(string $ext)
|
public static function executeDownloadReleaseAsset(string $repo, string $ext, bool $allowPrerelease = false)
|
||||||
{
|
{
|
||||||
return Controller::redirect(GitHub::getAppPrereleaseDownloadUrl(OS::getOsForExtension($ext)) ?: '/get', 302);
|
return Controller::redirect(GitHub::getRepoReleaseUrl($repo, OS::getOsForExtension($ext), $allowPrerelease) ?: '/get', 302);
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static function executeGetDaemonRedirect(string $os)
|
|
||||||
{
|
|
||||||
$uri = null;
|
|
||||||
$oses = Os::getAll();
|
|
||||||
|
|
||||||
if (isset($oses[$os])) {
|
|
||||||
$uri = GitHub::getDaemonDownloadUrl($os);
|
|
||||||
}
|
|
||||||
return Controller::redirect($uri, 302);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -48,7 +36,7 @@ class DownloadActions extends Actions
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$asset = Github::getAppAsset($os);
|
$asset = Github::getRepoAsset(GitHub::REPO_LBRY_DESKTOP, $os);
|
||||||
$params['downloadUrl'] = $asset ? $asset['browser_download_url'] : null;
|
$params['downloadUrl'] = $asset ? $asset['browser_download_url'] : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,7 +118,7 @@ class DownloadActions extends Actions
|
||||||
list($uri, $osTitle, $osIcon, $buttonLabel, $analyticsLabel) = $osChoices[$os];
|
list($uri, $osTitle, $osIcon, $buttonLabel, $analyticsLabel) = $osChoices[$os];
|
||||||
|
|
||||||
if ($os !== OS::OS_ANDROID) {
|
if ($os !== OS::OS_ANDROID) {
|
||||||
$asset = Github::getAppAsset($os);
|
$asset = Github::getRepoAsset(GitHub::REPO_LBRY_DESKTOP, $os);
|
||||||
} else {
|
} else {
|
||||||
$asset = ['browser_download_url' => static::ANDROID_STORE_URL];
|
$asset = ['browser_download_url' => static::ANDROID_STORE_URL];
|
||||||
}
|
}
|
||||||
|
@ -158,8 +146,8 @@ class DownloadActions extends Actions
|
||||||
list($uri, $osTitle, $osIcon, $buttonLabel, $analyticsLabel) = $osChoices[$os];
|
list($uri, $osTitle, $osIcon, $buttonLabel, $analyticsLabel) = $osChoices[$os];
|
||||||
|
|
||||||
if ($os !== OS::OS_ANDROID) {
|
if ($os !== OS::OS_ANDROID) {
|
||||||
$release = Github::getAppRelease();
|
$release = Github::getRepoRelease(GitHub::REPO_LBRY_DESKTOP, false);
|
||||||
$asset = Github::getAppAsset($os);
|
$asset = Github::getRepoAsset(GitHub::REPO_LBRY_DESKTOP, $os);
|
||||||
} else {
|
} else {
|
||||||
$asset = ['browser_download_url' => static::ANDROID_STORE_URL, 'size' => 0];
|
$asset = ['browser_download_url' => static::ANDROID_STORE_URL, 'size' => 0];
|
||||||
$release = [];
|
$release = [];
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
--
|
--
|
||||||
/FLO: /news
|
|
||||||
/There: /news
|
|
||||||
/art: /what
|
/art: /what
|
||||||
/credit-reports/2016-Q2: /credit-reports/2016-q2
|
/credit-reports/2016-Q2: /credit-reports/2016-q2
|
||||||
/developer-program: /news
|
/developer-program: /news
|
||||||
|
@ -8,15 +6,35 @@
|
||||||
/faq/Q1-17-CreditReport: /credit-reports/2017-Q1
|
/faq/Q1-17-CreditReport: /credit-reports/2017-Q1
|
||||||
/faq/Q4-credit-report: /credit-reports/2016-Q4
|
/faq/Q4-credit-report: /credit-reports/2016-Q4
|
||||||
/faq/api-help: /faq/how-to-cli
|
/faq/api-help: /faq/how-to-cli
|
||||||
|
/faq/claimtrie-implementation: https://lbry.tech/resources/lbry-claimtrie
|
||||||
/faq/contributing: https://lbry.tech/contribute
|
/faq/contributing: https://lbry.tech/contribute
|
||||||
|
/faq/how-to-encrypt-wallet: https://lbry.tech/resources/encrypt-lbrycrd
|
||||||
|
/faq/how-to-report-bugs: /faq/support
|
||||||
/faq/make-money: /faq/earn-income
|
/faq/make-money: /faq/earn-income
|
||||||
/faq/no-auction-options: /faq/naming
|
/faq/no-auction-options: /faq/naming
|
||||||
|
/faq/proof-algorithm: https://lbry.tech/resources/pow
|
||||||
/faq/quarterly-report-3q-2016: /credit-reports/2016-Q3
|
/faq/quarterly-report-3q-2016: /credit-reports/2016-Q3
|
||||||
/faq/quarterly-report-july-2016: /credit-reports/2016-Q2
|
/faq/quarterly-report-july-2016: /credit-reports/2016-Q2
|
||||||
|
/faq/regtest-setup-guide: https://lbry.tech/resources/regtest-setup
|
||||||
/faq/tips: /faq/appreciation
|
/faq/tips: /faq/appreciation
|
||||||
/faq/when-referral-payouts: /faq/referrals
|
/faq/when-referral-payouts: /faq/referrals
|
||||||
/faq/why-care-about-lbry: /get
|
/faq/why-care-about-lbry: /get
|
||||||
/feedback: /learn
|
/feedback: /learn
|
||||||
|
/FLO: /news
|
||||||
|
/get/lbry.exe : /releases/lbry-desktop.exe
|
||||||
|
/get/lbry.msi : /releases/lbry-desktop.exe
|
||||||
|
/get/lbry.dmg : /releases/lbry-desktop.dmg
|
||||||
|
/get/lbry.pkg : /releases/lbry-desktop.dmg
|
||||||
|
/get/lbry.deb : /releases/lbry-desktop.deb
|
||||||
|
/get/lbry.pre.exe : /releases/pre/lbry-desktop.exe
|
||||||
|
/get/lbry.pre.msi : /releases/pre/lbry-desktop.exe
|
||||||
|
/get/lbry.pre.dmg : /releases/pre/lbry-desktop.dmg
|
||||||
|
/get/lbry.pre.pkg : /releases/pre/lbry-desktop.dmg
|
||||||
|
/get/lbry.pre.deb : /releases/pre/lbry-desktop.deb
|
||||||
|
/get/lbrynet.linux.zip: /releases/lbry.deb
|
||||||
|
/get/lbrynet.windows.zip: /releases/lbry.exe
|
||||||
|
/get/lbrynet.macos.zip: /releases/lbry.pkg
|
||||||
|
/get/lbrynet.osx.zip: /releases/lbry.pkg
|
||||||
/get.How+to+Create+an+Identity+LBRY+TutorialsFollow: /faq/identity-requirements
|
/get.How+to+Create+an+Identity+LBRY+TutorialsFollow: /faq/identity-requirements
|
||||||
/getFree: /news/free-lbry-credits-come-and-get-em
|
/getFree: /news/free-lbry-credits-come-and-get-em
|
||||||
/join-list: /list/subscribe
|
/join-list: /list/subscribe
|
||||||
|
@ -25,9 +43,10 @@
|
||||||
/lbry-osx-latest.dmg: /get
|
/lbry-osx-latest.dmg: /get
|
||||||
/list: /list/subscribe
|
/list: /list/subscribe
|
||||||
/navframe?selectedItem=/news: /news
|
/navframe?selectedItem=/news: /news
|
||||||
|
/navframe?selectedItem=/news?selectedItem=/news: /news
|
||||||
/news/$1.2b-market-cap-we-dont-care: /news/1.2b-market-cap-we-dont-care
|
/news/$1.2b-market-cap-we-dont-care: /news/1.2b-market-cap-we-dont-care
|
||||||
/news/author/jeremy: /team
|
|
||||||
/news/author/jeremy/2: /team
|
/news/author/jeremy/2: /team
|
||||||
|
/news/author/jeremy: /team
|
||||||
/news/author/jimmy-kiselak: /team
|
/news/author/jimmy-kiselak: /team
|
||||||
/news/author/sam/page/2: /team
|
/news/author/sam/page/2: /team
|
||||||
/news/author/sam/page/3: /team
|
/news/author/sam/page/3: /team
|
||||||
|
@ -36,11 +55,10 @@
|
||||||
/news/every-major-tech-company-hates-you: /news
|
/news/every-major-tech-company-hates-you: /news
|
||||||
/news/get: /get
|
/news/get: /get
|
||||||
/news/ios: /ios
|
/news/ios: /ios
|
||||||
/news/lbry.io: /news
|
|
||||||
/news/lbry-promo-video-raw-footage: /news
|
/news/lbry-promo-video-raw-footage: /news
|
||||||
/news/news/lbry-app-sneak-peak-big-questions-answered-lbry-on-blocktalk-last-night: /news/lbry-app-sneak-peak-big-questions-answered-lbry-on-blocktalk-last-night
|
/news/lbry.io: /news
|
||||||
/news/meet-the-lbry-founders: /team
|
/news/meet-the-lbry-founders: /team
|
||||||
/navframe?selectedItem=/news?selectedItem=/news: /news
|
/news/news/lbry-app-sneak-peak-big-questions-answered-lbry-on-blocktalk-last-night: /news/lbry-app-sneak-peak-big-questions-answered-lbry-on-blocktalk-last-night
|
||||||
/news/news/meet-the-lbry-founders: /news/meet-the-lbry-founders
|
/news/news/meet-the-lbry-founders: /news/meet-the-lbry-founders
|
||||||
/news/news/ultimate-wizard-meet-alex-grin: /news/ultimate-wizard-meet-alex-grin
|
/news/news/ultimate-wizard-meet-alex-grin: /news/ultimate-wizard-meet-alex-grin
|
||||||
/news/page/2: /news
|
/news/page/2: /news
|
||||||
|
@ -54,16 +72,12 @@
|
||||||
/news/www.maidsafe.com: /news
|
/news/www.maidsafe.com: /news
|
||||||
/news/www.porcfest.com: /news/lbry-at-porcfest-first-public-screening-film-via-blockchain
|
/news/www.porcfest.com: /news/lbry-at-porcfest-first-public-screening-film-via-blockchain
|
||||||
/nothing-here: /news
|
/nothing-here: /news
|
||||||
/press-kit.zip: /press-kit
|
|
||||||
/participate: /faq/contributing
|
/participate: /faq/contributing
|
||||||
|
/press-kit.zip: /press-kit
|
||||||
/publish: /youtube
|
/publish: /youtube
|
||||||
/quickstart: https://lbry.tech/playground
|
/quickstart: https://lbry.tech/playground
|
||||||
/slack: https://chat.lbry.io
|
/slack: https://chat.lbry.io
|
||||||
|
/There: /news
|
||||||
/what-is-lbry: /faq/what-is-lbry
|
/what-is-lbry: /faq/what-is-lbry
|
||||||
/youtube/cdSSo: /news
|
/youtube/cdSSo: /news
|
||||||
/youtube/sync: /faq/youtube
|
/youtube/sync: /faq/youtube
|
||||||
/faq/how-to-report-bugs: /faq/support
|
|
||||||
/faq/how-to-encrypt-wallet: https://lbry.tech/resources/encrypt-lbrycrd
|
|
||||||
/faq/proof-algorithm: https://lbry.tech/resources/pow
|
|
||||||
/faq/regtest-setup-guide: https://lbry.tech/resources/regtest-setup
|
|
||||||
/faq/claimtrie-implementation: https://lbry.tech/resources/lbry-claimtrie
|
|
||||||
|
|
99
lib/thirdparty/Github.class.php
vendored
99
lib/thirdparty/Github.class.php
vendored
|
@ -2,6 +2,35 @@
|
||||||
|
|
||||||
class Github
|
class Github
|
||||||
{
|
{
|
||||||
|
const REPO_LBRY_DESKTOP = 'lbry-desktop';
|
||||||
|
|
||||||
|
public static function isAssetForOs(array $asset, string $os)
|
||||||
|
{
|
||||||
|
$ext = pathinfo($asset['name'], PATHINFO_EXTENSION);
|
||||||
|
switch($os)
|
||||||
|
{
|
||||||
|
case OS::OS_LINUX:
|
||||||
|
return
|
||||||
|
in_array($ext, ['deb']) ||
|
||||||
|
in_array($asset['content_type'], ['application/x-debian-package', 'application/x-deb']) ||
|
||||||
|
stripos($asset['name'], 'linux') !== false;
|
||||||
|
case OS::OS_OSX:
|
||||||
|
return
|
||||||
|
in_array($ext, ['dmg', 'pkg']) ||
|
||||||
|
in_array($asset['content_type'], ['application/x-diskcopy', 'application/x-apple-diskimage']) ||
|
||||||
|
stripos($asset['name'], 'darwin') !== false ||
|
||||||
|
stripos($asset['name'], 'macos') !== false;
|
||||||
|
case OS::OS_WINDOWS:
|
||||||
|
return
|
||||||
|
in_array($ext, ['exe', 'msi']) ||
|
||||||
|
stripos($asset['name'], 'windows') !== false;
|
||||||
|
case OS::OS_ANDROID:
|
||||||
|
return
|
||||||
|
in_array($ext, ['apk']) ||
|
||||||
|
stripos($asset['name'], 'android') !== false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected static function findReleaseAssetForOs(array $release, string $os)
|
protected static function findReleaseAssetForOs(array $release, string $os)
|
||||||
{
|
{
|
||||||
if (!in_array($os, array_keys(OS::getAll()))) {
|
if (!in_array($os, array_keys(OS::getAll()))) {
|
||||||
|
@ -13,85 +42,41 @@ class Github
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($release['assets'] as $asset) {
|
foreach ($release['assets'] as $asset) {
|
||||||
$ext = substr($asset['name'], -4);
|
if (static::isAssetForOs($asset, $os)) {
|
||||||
if (
|
|
||||||
($os == OS::OS_LINUX &&
|
|
||||||
($ext == '.deb' || in_array($asset['content_type'], ['application/x-debian-package', 'application/x-deb']))) ||
|
|
||||||
($os == OS::OS_OSX &&
|
|
||||||
($ext == '.dmg' || in_array($asset['content_type'], ['application/x-diskcopy', 'application/x-apple-diskimage']))) ||
|
|
||||||
($os == OS::OS_WINDOWS && $ext == '.exe')
|
|
||||||
) {
|
|
||||||
return $asset;
|
return $asset;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getAppRelease($cache = true)
|
public static function getRepoRelease($repo, $prerelease = false, $cache = true)
|
||||||
{
|
{
|
||||||
|
$endpoint = '/repos/lbryio/' . $repo . '/releases';
|
||||||
|
if (!$prerelease) {
|
||||||
|
$endpoint .= '/latest';
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return static::get('/repos/lbryio/lbry-desktop/releases/latest', [], $cache);
|
$releases = static::get($endpoint, [], $cache);
|
||||||
|
return $prerelease ? $releases[0] : $releases;
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getAppAsset($os, $cache = true)
|
public static function getRepoAsset($repo, $os, $prerelease = false, $cache = true)
|
||||||
{
|
{
|
||||||
$release = static::getAppRelease($cache);
|
$release = static::getRepoRelease($repo, $prerelease, $cache);
|
||||||
return $release ? static::findReleaseAssetForOs($release, $os) : null;
|
return $release ? static::findReleaseAssetForOs($release, $os) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static function getAppDownloadUrl($os, $cache = true)
|
public static function getRepoReleaseUrl($repo, $os, bool $prerelease = false, $cache = true)
|
||||||
{
|
{
|
||||||
$asset = static::getAppAsset($os, $cache);
|
$asset = static::getRepoAsset($repo, $os, $prerelease, $cache);
|
||||||
return $asset ? $asset['browser_download_url'] : null;
|
return $asset ? $asset['browser_download_url'] : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getAppPrereleaseDownloadUrl($os, $cache = true)
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
$releases = static::get('/repos/lbryio/lbry-desktop/releases', [], $cache);
|
|
||||||
if (count($releases)) {
|
|
||||||
$asset = static::findReleaseAssetForOs($releases[0], $os);
|
|
||||||
return $asset ? $asset['browser_download_url'] : null;
|
|
||||||
}
|
|
||||||
} catch (Exception $e) {
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static function getDaemonReleaseProperty($os, $property, $isAssetProperty = false, $cache = true)
|
|
||||||
{
|
|
||||||
if (!in_array($os, array_keys(OS::getAll()))) {
|
|
||||||
throw new DomainException('Unknown OS');
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
$releaseData = static::get('/repos/lbryio/lbry/releases/latest', [], $cache);
|
|
||||||
foreach ($releaseData['assets'] as $asset) {
|
|
||||||
if (
|
|
||||||
($os == OS::OS_LINUX && stripos($asset['browser_download_url'], 'linux') !== false) ||
|
|
||||||
($os == OS::OS_OSX && stripos($asset['browser_download_url'], 'macos') !== false) ||
|
|
||||||
($os == OS::OS_WINDOWS && strpos($asset['browser_download_url'], 'windows') !== false)
|
|
||||||
) {
|
|
||||||
return $isAssetProperty ? $asset[$property] : $releaseData[$property];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception $e) {
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function getDaemonDownloadUrl($os, $cache = true)
|
|
||||||
{
|
|
||||||
return static::getDaemonReleaseProperty($os, 'browser_download_url', true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function get($endpoint, array $params = [], $cache = true)
|
public static function get($endpoint, array $params = [], $cache = true)
|
||||||
{
|
{
|
||||||
$twoHoursInSeconds = 7200;
|
$twoHoursInSeconds = 7200;
|
||||||
|
|
Loading…
Add table
Reference in a new issue