Skip to content

Commit 51d6e41

Browse files
AlienHobokendevelar
authored andcommitted
fix(updater): GitHub private repo for windows (#1382)
Partial solution for #1370
1 parent c0d299d commit 51d6e41

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed

packages/electron-updater/src/PrivateGitHubProvider.ts

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
import { session } from "electron"
12
import { HttpError, request } from "electron-builder-http"
23
import { CancellationToken } from "electron-builder-http/out/CancellationToken"
34
import { GithubOptions, UpdateInfo } from "electron-builder-http/out/publishOptions"
45
import { RequestOptions } from "http"
56
import * as path from "path"
67
import { parse as parseUrl } from "url"
8+
import { safeLoad } from "js-yaml"
79
import { FileInfo, formatUrl, getChannelFilename, getCurrentPlatform, getDefaultChannelName } from "./api"
810
import { validateUpdateInfo } from "./GenericProvider"
911
import { BaseGitHubProvider } from "./GitHubProvider"
@@ -13,8 +15,13 @@ export interface PrivateGitHubUpdateInfo extends UpdateInfo {
1315
}
1416

1517
export class PrivateGitHubProvider extends BaseGitHubProvider<PrivateGitHubUpdateInfo> {
18+
private sess: any
19+
1620
constructor(options: GithubOptions, private readonly token: string) {
1721
super(options, "api.github.com")
22+
23+
this.sess = session.fromPartition('electron-updater')
24+
this.registerHeaderRemovalListener();
1825
}
1926

2027
async getLatestVersion(): Promise<PrivateGitHubUpdateInfo> {
@@ -24,11 +31,21 @@ export class PrivateGitHubProvider extends BaseGitHubProvider<PrivateGitHubUpdat
2431

2532
const assets = await this.getLatestVersionInfo(basePath, cancellationToken)
2633
const requestOptions = Object.assign({
27-
headers: this.configureHeaders("application/octet-stream")
34+
headers: this.configureHeaders("application/octet-stream"),
35+
session: this.sess
2836
}, parseUrl(assets.find(it => it.name == channelFile)!.url))
2937
let result: any
3038
try {
3139
result = await request<UpdateInfo>(requestOptions, cancellationToken)
40+
41+
if (typeof result === "string") {
42+
if (getCurrentPlatform() === "darwin") {
43+
result = JSON.parse(result)
44+
}
45+
else {
46+
result = safeLoad(result)
47+
}
48+
}
3249
}
3350
catch (e) {
3451
if (e instanceof HttpError && e.response.statusCode === 404) {
@@ -45,6 +62,20 @@ export class PrivateGitHubProvider extends BaseGitHubProvider<PrivateGitHubUpdat
4562
return result
4663
}
4764

65+
private registerHeaderRemovalListener(): void {
66+
const filter = {
67+
urls: ["*://*.amazonaws.com/*"]
68+
};
69+
70+
this.sess.webRequest.onBeforeSendHeaders(filter, (details: any, callback: any) => {
71+
if(details.requestHeaders['Authorization']) {
72+
delete details.requestHeaders['Authorization']
73+
}
74+
75+
callback({cancel: false, requestHeaders: details.requestHeaders})
76+
});
77+
};
78+
4879
private configureHeaders(accept: string) {
4980
return Object.assign({
5081
Accept: accept,
@@ -91,6 +122,7 @@ export class PrivateGitHubProvider extends BaseGitHubProvider<PrivateGitHubUpdat
91122
url: versionInfo.assets.find(it => it.name == name)!.url,
92123
sha2: versionInfo.sha2,
93124
headers: headers,
125+
session: this.sess
94126
}
95127
}
96128
}

packages/electron-updater/src/electronHttpExecutor.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { net } from "electron"
1+
import { net, session } from "electron"
22
import { configureRequestOptions, DownloadOptions, dumpRequestOptions, HttpExecutor } from "electron-builder-http"
33
import { CancellationToken } from "electron-builder-http/out/CancellationToken"
44
import { ensureDir } from "fs-extra-p"
@@ -54,6 +54,7 @@ export class ElectronHttpExecutor extends HttpExecutor<Electron.RequestOptions,
5454

5555

5656
protected doRequest(options: any, callback: (response: any) => void): any {
57+
options.session = session.fromPartition('electron-updater')
5758
return net.request(options, callback)
5859
}
5960
}

0 commit comments

Comments
 (0)