Skip to content

Commit

Permalink
fix: removeAuthHeader must strip auth only for AWS
Browse files Browse the repository at this point in the history
develar committed Mar 15, 2017

Verified

This commit was signed with the committer’s verified signature. The key has expired.
mjcarroll Michael Carroll
1 parent a40f94b commit d7a6760
Showing 5 changed files with 55 additions and 23 deletions.
54 changes: 42 additions & 12 deletions docs/Developer API.md
Original file line number Diff line number Diff line change
@@ -3405,17 +3405,23 @@ Please note — on macOS [you need to register an `open-url` event handler](http
## electron-updater/out/GitHubProvider

* [electron-updater/out/GitHubProvider](#module_electron-updater/out/GitHubProvider)
* [.GitHubProvider](#GitHubProvider) ⇐ <code>[Provider](Auto-Update#Provider)</code>
* [.BaseGitHubProvider](#BaseGitHubProvider) ⇐ <code>[Provider](Auto-Update#Provider)</code>
* [.GitHubProvider](#GitHubProvider) ⇐ <code>[BaseGitHubProvider](#BaseGitHubProvider)</code>
* [`.getLatestVersion()`](#module_electron-updater/out/GitHubProvider.GitHubProvider+getLatestVersion) ⇒ <code>Promise&lt;[UpdateInfo](Publishing-Artifacts#UpdateInfo)&gt;</code>
* [`.getUpdateFile(versionInfo)`](#module_electron-updater/out/GitHubProvider.GitHubProvider+getUpdateFile) ⇒ <code>Promise&lt;[FileInfo](Auto-Update#FileInfo)&gt;</code>

<a name="GitHubProvider"></a>
<a name="BaseGitHubProvider"></a>

### GitHubProvider ⇐ <code>[Provider](Auto-Update#Provider)</code>
### BaseGitHubProvider ⇐ <code>[Provider](Auto-Update#Provider)</code>
**Kind**: class of <code>[electron-updater/out/GitHubProvider](#module_electron-updater/out/GitHubProvider)</code>
**Extends**: <code>[Provider](Auto-Update#Provider)</code>
<a name="GitHubProvider"></a>

* [.GitHubProvider](#GitHubProvider) ⇐ <code>[Provider](Auto-Update#Provider)</code>
### GitHubProvider ⇐ <code>[BaseGitHubProvider](#BaseGitHubProvider)</code>
**Kind**: class of <code>[electron-updater/out/GitHubProvider](#module_electron-updater/out/GitHubProvider)</code>
**Extends**: <code>[BaseGitHubProvider](#BaseGitHubProvider)</code>

* [.GitHubProvider](#GitHubProvider) ⇐ <code>[BaseGitHubProvider](#BaseGitHubProvider)</code>
* [`.getLatestVersion()`](#module_electron-updater/out/GitHubProvider.GitHubProvider+getLatestVersion) ⇒ <code>Promise&lt;[UpdateInfo](Publishing-Artifacts#UpdateInfo)&gt;</code>
* [`.getUpdateFile(versionInfo)`](#module_electron-updater/out/GitHubProvider.GitHubProvider+getUpdateFile) ⇒ <code>Promise&lt;[FileInfo](Auto-Update#FileInfo)&gt;</code>

@@ -3523,23 +3529,47 @@ Start downloading update manually. You can use this method if `autoDownload` opt
## electron-updater/out/PrivateGitHubProvider

* [electron-updater/out/PrivateGitHubProvider](#module_electron-updater/out/PrivateGitHubProvider)
* [.PrivateGitHubProvider](#PrivateGitHubProvider) ⇐ <code>[Provider](Auto-Update#Provider)</code>
* [`.getLatestVersion()`](#module_electron-updater/out/PrivateGitHubProvider.PrivateGitHubProvider+getLatestVersion) ⇒ <code>Promise&lt;[UpdateInfo](Publishing-Artifacts#UpdateInfo)&gt;</code>
* [`.Asset`](#Asset)
* [`.PrivateGitHubUpdateInfo`](#PrivateGitHubUpdateInfo) ⇐ <code>[UpdateInfo](Publishing-Artifacts#UpdateInfo)</code>
* [.PrivateGitHubProvider](#PrivateGitHubProvider) ⇐ <code>[BaseGitHubProvider](#BaseGitHubProvider)</code>
* [`.getLatestVersion()`](#module_electron-updater/out/PrivateGitHubProvider.PrivateGitHubProvider+getLatestVersion) ⇒ <code>Promise&lt;[PrivateGitHubUpdateInfo](#PrivateGitHubUpdateInfo)&gt;</code>
* [`.getUpdateFile(versionInfo)`](#module_electron-updater/out/PrivateGitHubProvider.PrivateGitHubProvider+getUpdateFile) ⇒ <code>Promise&lt;[FileInfo](Auto-Update#FileInfo)&gt;</code>

<a name="Asset"></a>

### `Asset`
**Kind**: interface of <code>[electron-updater/out/PrivateGitHubProvider](#module_electron-updater/out/PrivateGitHubProvider)</code>
**Properties**

| Name | Type |
| --- | --- |
| **name**| <code>string</code> |
| **url**| <code>string</code> |

<a name="PrivateGitHubUpdateInfo"></a>

### `PrivateGitHubUpdateInfo` ⇐ <code>[UpdateInfo](Publishing-Artifacts#UpdateInfo)</code>
**Kind**: interface of <code>[electron-updater/out/PrivateGitHubProvider](#module_electron-updater/out/PrivateGitHubProvider)</code>
**Extends**: <code>[UpdateInfo](Publishing-Artifacts#UpdateInfo)</code>
**Properties**

| Name | Type |
| --- | --- |
| **assets**| <code>Array&lt;[Asset](#Asset)&gt;</code> |

<a name="PrivateGitHubProvider"></a>

### PrivateGitHubProvider ⇐ <code>[Provider](Auto-Update#Provider)</code>
### PrivateGitHubProvider ⇐ <code>[BaseGitHubProvider](#BaseGitHubProvider)</code>
**Kind**: class of <code>[electron-updater/out/PrivateGitHubProvider](#module_electron-updater/out/PrivateGitHubProvider)</code>
**Extends**: <code>[Provider](Auto-Update#Provider)</code>
**Extends**: <code>[BaseGitHubProvider](#BaseGitHubProvider)</code>

* [.PrivateGitHubProvider](#PrivateGitHubProvider) ⇐ <code>[Provider](Auto-Update#Provider)</code>
* [`.getLatestVersion()`](#module_electron-updater/out/PrivateGitHubProvider.PrivateGitHubProvider+getLatestVersion) ⇒ <code>Promise&lt;[UpdateInfo](Publishing-Artifacts#UpdateInfo)&gt;</code>
* [.PrivateGitHubProvider](#PrivateGitHubProvider) ⇐ <code>[BaseGitHubProvider](#BaseGitHubProvider)</code>
* [`.getLatestVersion()`](#module_electron-updater/out/PrivateGitHubProvider.PrivateGitHubProvider+getLatestVersion) ⇒ <code>Promise&lt;[PrivateGitHubUpdateInfo](#PrivateGitHubUpdateInfo)&gt;</code>
* [`.getUpdateFile(versionInfo)`](#module_electron-updater/out/PrivateGitHubProvider.PrivateGitHubProvider+getUpdateFile) ⇒ <code>Promise&lt;[FileInfo](Auto-Update#FileInfo)&gt;</code>

<a name="module_electron-updater/out/PrivateGitHubProvider.PrivateGitHubProvider+getLatestVersion"></a>

#### `privateGitHubProvider.getLatestVersion()` ⇒ <code>Promise&lt;[UpdateInfo](Publishing-Artifacts#UpdateInfo)&gt;</code>
#### `privateGitHubProvider.getLatestVersion()` ⇒ <code>Promise&lt;[PrivateGitHubUpdateInfo](#PrivateGitHubUpdateInfo)&gt;</code>
**Kind**: instance method of <code>[PrivateGitHubProvider](#PrivateGitHubProvider)</code>
<a name="module_electron-updater/out/PrivateGitHubProvider.PrivateGitHubProvider+getUpdateFile"></a>

@@ -3548,7 +3578,7 @@ Start downloading update manually. You can use this method if `autoDownload` opt

| Param | Type |
| --- | --- |
| versionInfo | <code>[UpdateInfo](Publishing-Artifacts#UpdateInfo)</code> |
| versionInfo | <code>[PrivateGitHubUpdateInfo](#PrivateGitHubUpdateInfo)</code> |

<a name="module_electron-updater/out/electronHttpExecutor"></a>

1 change: 1 addition & 0 deletions docs/Publishing Artifacts.md
Original file line number Diff line number Diff line change
@@ -137,6 +137,7 @@ GitHub options.
| vPrefixedTagName = <code>true</code>| <code>boolean</code> | <a name="GithubOptions-vPrefixedTagName"></a>Whether to use `v`-prefixed tag name. |
| host = <code>&quot;github.com&quot;</code>| <code>string</code> \| <code>null</code> | <a name="GithubOptions-host"></a>The host (including the port if need). |
| protocol = <code>https</code>| <code>"https"</code> \| <code>"http"</code> \| <code>null</code> | <a name="GithubOptions-protocol"></a>The protocol. GitHub Publisher supports only `https`. |
| token| <code>string</code> \| <code>null</code> | <a name="GithubOptions-token"></a>The access token to support auto-update from private github repositories. Never specify it in the configuration files. Only for [setFeedURL](module:electron-updater/out/AppUpdater.AppUpdater+setFeedURL). |

<a name="PublishConfiguration"></a>

19 changes: 10 additions & 9 deletions packages/electron-builder-http/src/httpExecutor.ts
Original file line number Diff line number Diff line change
@@ -108,7 +108,8 @@ export abstract class HttpExecutor<REQUEST_OPTS, REQUEST> {
return
}

this.doApiRequest(<REQUEST_OPTS>Object.assign({}, removeAuthHeader(options), parseUrl(redirectUrl)), cancellationToken, requestProcessor, redirectCount)
const newUrl = parseUrl(redirectUrl)
this.doApiRequest(<REQUEST_OPTS>removeAuthHeader(Object.assign({}, options, newUrl)), cancellationToken, requestProcessor, redirectCount)
.then(resolve)
.catch(reject)
return
@@ -159,11 +160,11 @@ export abstract class HttpExecutor<REQUEST_OPTS, REQUEST> {
if (redirectUrl != null) {
if (redirectCount < this.maxRedirects) {
const parsedUrl = parseUrl(redirectUrl)
this.doDownload(Object.assign({}, removeAuthHeader(requestOptions), {
this.doDownload(removeAuthHeader(Object.assign({}, requestOptions, {
hostname: parsedUrl.hostname,
path: parsedUrl.path,
port: parsedUrl.port == null ? undefined : parsedUrl.port
}), destination, redirectCount++, options, callback, onCancel)
})), destination, redirectCount++, options, callback, onCancel)
}
else {
callback(new Error(`Too many redirects (> ${this.maxRedirects})`))
@@ -306,13 +307,13 @@ export function dumpRequestOptions(options: RequestOptions): string {
return JSON.stringify(safe, null, 2)
}

// requestOptions should be cloned already, modified in place
function removeAuthHeader(requestOptions: RequestOptions): RequestOptions {
const result = Object.assign({}, requestOptions)
// github redirect to amazon s3 - avoid error "Only one auth mechanism allowed"
if (result.headers != null) {
result.headers = Object.assign({}, result.headers)
delete result.headers.Authorization
delete result.headers.authorization
if (requestOptions.headers != null && (requestOptions.hostname || "").includes(".amazonaws.")) {
requestOptions.headers = Object.assign({}, requestOptions.headers)
delete requestOptions.headers.Authorization
delete requestOptions.headers.authorization
}
return result
return requestOptions
}
2 changes: 1 addition & 1 deletion test/out/__snapshots__/nsisUpdaterTest.js.snap
Original file line number Diff line number Diff line change
@@ -71,7 +71,7 @@ exports[`file url github private 1`] = `
Object {
"headers": Object {
"Accept": "application/octet-stream",
"Authorization": "token fad40e29d04dc522e3ba03a5468339e191acd82d",
"Authorization": "token 30440323d382f1dcbe9313c20f8d718c4305174c",
},
"name": "TestApp-Setup-1.1.0.exe",
"sha2": "f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2",
2 changes: 1 addition & 1 deletion test/src/nsisUpdaterTest.ts
Original file line number Diff line number Diff line change
@@ -167,7 +167,7 @@ test("file url github", async () => {
expect(actualEvents).toEqual(expectedEvents)
})

test.skip("file url github private", async () => {
test("file url github private", async () => {
const updater = new NsisUpdater()
updater.updateConfigPath = await writeUpdateConfig(<GithubOptions>{
provider: "github",

0 comments on commit d7a6760

Please sign in to comment.