mirror of
https://github.com/LBRYFoundation/lbry.com.git
synced 2025-08-23 09:37: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->any('/get/lbry.{ext:c}', 'DownloadActions::executeGetAppRedirect');
|
||||
$router->any('/get/lbrynet.{os:c}.zip', 'DownloadActions::executeGetDaemonRedirect');
|
||||
$router->get('/releases/{repo:c}.{ext:c}', 'DownloadActions::executeDownloadReleaseAsset');
|
||||
$router->get('/releases/pre/{repo:c}.{ext:c}', 'DownloadActions::executeDownloadPrereleaseAsset');
|
||||
|
||||
$router->get([ContentActions::URL_NEWS . '/{slug:c}?', 'news'], 'ContentActions::executeNews');
|
||||
$router->get([ContentActions::URL_FAQ . '/{slug:c}?', 'faq'], 'ContentActions::executeFaq');
|
||||
|
|
|
@ -5,26 +5,14 @@ class DownloadActions extends Actions
|
|||
//bad, fix me!
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
public static function executeGetDaemonRedirect(string $os)
|
||||
{
|
||||
$uri = null;
|
||||
$oses = Os::getAll();
|
||||
|
||||
if (isset($oses[$os])) {
|
||||
$uri = GitHub::getDaemonDownloadUrl($os);
|
||||
}
|
||||
return Controller::redirect($uri, 302);
|
||||
return Controller::redirect(GitHub::getRepoReleaseUrl($repo, OS::getOsForExtension($ext), $allowPrerelease) ?: '/get', 302);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -48,7 +36,7 @@ class DownloadActions extends Actions
|
|||
}
|
||||
else
|
||||
{
|
||||
$asset = Github::getAppAsset($os);
|
||||
$asset = Github::getRepoAsset(GitHub::REPO_LBRY_DESKTOP, $os);
|
||||
$params['downloadUrl'] = $asset ? $asset['browser_download_url'] : null;
|
||||
}
|
||||
|
||||
|
@ -130,7 +118,7 @@ class DownloadActions extends Actions
|
|||
list($uri, $osTitle, $osIcon, $buttonLabel, $analyticsLabel) = $osChoices[$os];
|
||||
|
||||
if ($os !== OS::OS_ANDROID) {
|
||||
$asset = Github::getAppAsset($os);
|
||||
$asset = Github::getRepoAsset(GitHub::REPO_LBRY_DESKTOP, $os);
|
||||
} else {
|
||||
$asset = ['browser_download_url' => static::ANDROID_STORE_URL];
|
||||
}
|
||||
|
@ -158,8 +146,8 @@ class DownloadActions extends Actions
|
|||
list($uri, $osTitle, $osIcon, $buttonLabel, $analyticsLabel) = $osChoices[$os];
|
||||
|
||||
if ($os !== OS::OS_ANDROID) {
|
||||
$release = Github::getAppRelease();
|
||||
$asset = Github::getAppAsset($os);
|
||||
$release = Github::getRepoRelease(GitHub::REPO_LBRY_DESKTOP, false);
|
||||
$asset = Github::getRepoAsset(GitHub::REPO_LBRY_DESKTOP, $os);
|
||||
} else {
|
||||
$asset = ['browser_download_url' => static::ANDROID_STORE_URL, 'size' => 0];
|
||||
$release = [];
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
--
|
||||
/FLO: /news
|
||||
/There: /news
|
||||
--
|
||||
/art: /what
|
||||
/credit-reports/2016-Q2: /credit-reports/2016-q2
|
||||
/developer-program: /news
|
||||
|
@ -8,15 +6,35 @@
|
|||
/faq/Q1-17-CreditReport: /credit-reports/2017-Q1
|
||||
/faq/Q4-credit-report: /credit-reports/2016-Q4
|
||||
/faq/api-help: /faq/how-to-cli
|
||||
/faq/claimtrie-implementation: https://lbry.tech/resources/lbry-claimtrie
|
||||
/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/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-july-2016: /credit-reports/2016-Q2
|
||||
/faq/regtest-setup-guide: https://lbry.tech/resources/regtest-setup
|
||||
/faq/tips: /faq/appreciation
|
||||
/faq/when-referral-payouts: /faq/referrals
|
||||
/faq/why-care-about-lbry: /get
|
||||
/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
|
||||
/getFree: /news/free-lbry-credits-come-and-get-em
|
||||
/join-list: /list/subscribe
|
||||
|
@ -25,9 +43,10 @@
|
|||
/lbry-osx-latest.dmg: /get
|
||||
/list: /list/subscribe
|
||||
/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/author/jeremy: /team
|
||||
/news/author/jeremy/2: /team
|
||||
/news/author/jeremy: /team
|
||||
/news/author/jimmy-kiselak: /team
|
||||
/news/author/sam/page/2: /team
|
||||
/news/author/sam/page/3: /team
|
||||
|
@ -36,11 +55,10 @@
|
|||
/news/every-major-tech-company-hates-you: /news
|
||||
/news/get: /get
|
||||
/news/ios: /ios
|
||||
/news/lbry.io: /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
|
||||
/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/ultimate-wizard-meet-alex-grin: /news/ultimate-wizard-meet-alex-grin
|
||||
/news/page/2: /news
|
||||
|
@ -54,16 +72,12 @@
|
|||
/news/www.maidsafe.com: /news
|
||||
/news/www.porcfest.com: /news/lbry-at-porcfest-first-public-screening-film-via-blockchain
|
||||
/nothing-here: /news
|
||||
/press-kit.zip: /press-kit
|
||||
/participate: /faq/contributing
|
||||
/press-kit.zip: /press-kit
|
||||
/publish: /youtube
|
||||
/quickstart: https://lbry.tech/playground
|
||||
/slack: https://chat.lbry.io
|
||||
/There: /news
|
||||
/what-is-lbry: /faq/what-is-lbry
|
||||
/youtube/cdSSo: /news
|
||||
/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
|
||||
{
|
||||
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)
|
||||
{
|
||||
if (!in_array($os, array_keys(OS::getAll()))) {
|
||||
|
@ -13,85 +42,41 @@ class Github
|
|||
}
|
||||
|
||||
foreach ($release['assets'] as $asset) {
|
||||
$ext = substr($asset['name'], -4);
|
||||
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')
|
||||
) {
|
||||
if (static::isAssetForOs($asset, $os)) {
|
||||
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 {
|
||||
return static::get('/repos/lbryio/lbry-desktop/releases/latest', [], $cache);
|
||||
$releases = static::get($endpoint, [], $cache);
|
||||
return $prerelease ? $releases[0] : $releases;
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
$twoHoursInSeconds = 7200;
|
||||
|
|
Loading…
Add table
Reference in a new issue