Skip to content

Commit a014294

Browse files
authored
Fix ghrel download link, use API directly (#711)
* Fix ghrel download link, use API directly * Add missing GH token for downloading API
1 parent 39953b5 commit a014294

File tree

1 file changed

+12
-11
lines changed

1 file changed

+12
-11
lines changed

src/SPC/store/Downloader.php

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ public static function getLatestGithubRelease(string $name, array $source, bool
121121
retries: self::getRetryAttempts()
122122
), true);
123123
$url = null;
124+
$filename = null;
124125
foreach ($data as $release) {
125126
if (($source['prefer-stable'] ?? false) === true && $release['prerelease'] === true) {
126127
continue;
@@ -131,16 +132,16 @@ public static function getLatestGithubRelease(string $name, array $source, bool
131132
}
132133
foreach ($release['assets'] as $asset) {
133134
if (preg_match('|' . $source['match'] . '|', $asset['name'])) {
134-
$url = $asset['browser_download_url'];
135+
$url = "https://api.github.com/repos/{$source['repo']}/releases/assets/{$asset['id']}";
136+
$filename = $asset['name'];
135137
break 2;
136138
}
137139
}
138140
}
139141

140-
if (!$url) {
142+
if (!$url || !$filename) {
141143
throw new DownloaderException("failed to find {$name} release metadata");
142144
}
143-
$filename = basename($url);
144145

145146
return [$url, $filename];
146147
}
@@ -191,7 +192,7 @@ public static function getFromFileList(string $name, array $source): array
191192
* @throws RuntimeException
192193
* @throws WrongUsageException
193194
*/
194-
public static function downloadFile(string $name, string $url, string $filename, ?string $move_path = null, int $download_as = SPC_DOWNLOAD_SOURCE): void
195+
public static function downloadFile(string $name, string $url, string $filename, ?string $move_path = null, int $download_as = SPC_DOWNLOAD_SOURCE, array $headers = [], array $hooks = []): void
195196
{
196197
logger()->debug("Downloading {$url}");
197198
$cancel_func = function () use ($filename) {
@@ -201,7 +202,7 @@ public static function downloadFile(string $name, string $url, string $filename,
201202
}
202203
};
203204
self::registerCancelEvent($cancel_func);
204-
self::curlDown(url: $url, path: FileSystem::convertPath(DOWNLOAD_PATH . "/{$filename}"), retries: self::getRetryAttempts());
205+
self::curlDown(url: $url, path: FileSystem::convertPath(DOWNLOAD_PATH . "/{$filename}"), headers: $headers, hooks: $hooks, retries: self::getRetryAttempts());
205206
self::unregisterCancelEvent();
206207
logger()->debug("Locking {$filename}");
207208
if ($download_as === SPC_DOWNLOAD_PRE_BUILT) {
@@ -341,15 +342,15 @@ public static function downloadPackage(string $name, ?array $pkg = null, bool $f
341342
break;
342343
case 'ghtar': // GitHub Release (tar)
343344
[$url, $filename] = self::getLatestGithubTarball($name, $pkg);
344-
self::downloadFile($name, $url, $filename, $pkg['extract'] ?? null, SPC_DOWNLOAD_PACKAGE);
345+
self::downloadFile($name, $url, $filename, $pkg['extract'] ?? null, SPC_DOWNLOAD_PACKAGE, hooks: [[CurlHook::class, 'setupGithubToken']]);
345346
break;
346347
case 'ghtagtar': // GitHub Tag (tar)
347348
[$url, $filename] = self::getLatestGithubTarball($name, $pkg, 'tags');
348-
self::downloadFile($name, $url, $filename, $pkg['extract'] ?? null, SPC_DOWNLOAD_PACKAGE);
349+
self::downloadFile($name, $url, $filename, $pkg['extract'] ?? null, SPC_DOWNLOAD_PACKAGE, hooks: [[CurlHook::class, 'setupGithubToken']]);
349350
break;
350351
case 'ghrel': // GitHub Release (uploaded)
351352
[$url, $filename] = self::getLatestGithubRelease($name, $pkg);
352-
self::downloadFile($name, $url, $filename, $pkg['extract'] ?? null, SPC_DOWNLOAD_PACKAGE);
353+
self::downloadFile($name, $url, $filename, $pkg['extract'] ?? null, SPC_DOWNLOAD_PACKAGE, ['Accept: application/octet-stream'], [[CurlHook::class, 'setupGithubToken']]);
353354
break;
354355
case 'filelist': // Basic File List (regex based crawler)
355356
[$url, $filename] = self::getFromFileList($name, $pkg);
@@ -447,15 +448,15 @@ public static function downloadSource(string $name, ?array $source = null, bool
447448
break;
448449
case 'ghtar': // GitHub Release (tar)
449450
[$url, $filename] = self::getLatestGithubTarball($name, $source);
450-
self::downloadFile($name, $url, $filename, $source['path'] ?? null, $download_as);
451+
self::downloadFile($name, $url, $filename, $source['path'] ?? null, $download_as, hooks: [[CurlHook::class, 'setupGithubToken']]);
451452
break;
452453
case 'ghtagtar': // GitHub Tag (tar)
453454
[$url, $filename] = self::getLatestGithubTarball($name, $source, 'tags');
454-
self::downloadFile($name, $url, $filename, $source['path'] ?? null, $download_as);
455+
self::downloadFile($name, $url, $filename, $source['path'] ?? null, $download_as, hooks: [[CurlHook::class, 'setupGithubToken']]);
455456
break;
456457
case 'ghrel': // GitHub Release (uploaded)
457458
[$url, $filename] = self::getLatestGithubRelease($name, $source);
458-
self::downloadFile($name, $url, $filename, $source['path'] ?? null, $download_as);
459+
self::downloadFile($name, $url, $filename, $source['path'] ?? null, $download_as, ['Accept: application/octet-stream'], [[CurlHook::class, 'setupGithubToken']]);
459460
break;
460461
case 'filelist': // Basic File List (regex based crawler)
461462
[$url, $filename] = self::getFromFileList($name, $source);

0 commit comments

Comments
 (0)