diff --git a/packages/electron-builder-http/src/publishOptions.ts b/packages/electron-builder-http/src/publishOptions.ts index 25fb890dc59..4e40361b3de 100644 --- a/packages/electron-builder-http/src/publishOptions.ts +++ b/packages/electron-builder-http/src/publishOptions.ts @@ -64,8 +64,8 @@ export interface GithubOptions extends PublishConfiguration { } /** @private */ -export function githubUrl(options: GithubOptions) { - return `${options.protocol || "https"}://${options.host || "github.com"}` +export function githubUrl(options: GithubOptions, defaultHost: string = "github.com") { + return `${options.protocol || "https"}://${options.host || defaultHost}` } /** diff --git a/packages/electron-updater/src/GitHubProvider.ts b/packages/electron-updater/src/GitHubProvider.ts index 15b4f1ca5e4..271b1602675 100644 --- a/packages/electron-updater/src/GitHubProvider.ts +++ b/packages/electron-updater/src/GitHubProvider.ts @@ -12,10 +12,10 @@ export abstract class BaseGitHubProvider extends Provider< // so, we don't need to parse port (because node http doesn't support host as url does) protected readonly baseUrl: RequestOptions - constructor(protected readonly options: GithubOptions, baseHost: string) { + constructor(protected readonly options: GithubOptions, defaultHost: string) { super() - const baseUrl = parseUrl(`${options.protocol || "https"}://${options.host || baseHost}`) + const baseUrl = parseUrl(githubUrl(options, defaultHost)) this.baseUrl = { protocol: baseUrl.protocol, hostname: baseUrl.hostname, @@ -120,7 +120,10 @@ export class GitHubProvider extends BaseGitHubProvider { } private get basePath() { - return `/${this.options.owner}/${this.options.repo}/releases` + const result = `/${this.options.owner}/${this.options.repo}/releases` + // https://github.com/electron-userland/electron-builder/issues/1903#issuecomment-320881211 + const host = this.options.host + return host != null && host !== "github.com" && host !== "api.github.com" ? `/api/v3${result}` : result } async getUpdateFile(versionInfo: UpdateInfo): Promise { @@ -130,6 +133,7 @@ export class GitHubProvider extends BaseGitHubProvider { // space is not supported on GitHub const name = versionInfo.githubArtifactName || path.posix.basename(versionInfo.path).replace(/ /g, "-") + // noinspection JSDeprecatedSymbols return { name, url: formatUrl({path: this.getBaseDownloadPath(versionInfo.version, name), ...this.baseUrl} as any),