Skip to content

Commit

Permalink
fix: removeAuthHeader must strip auth only for AWS
Browse files Browse the repository at this point in the history
  • Loading branch information
develar committed Mar 15, 2017
1 parent a40f94b commit d7a6760
Show file tree
Hide file tree
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
Expand Up @@ -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>

Expand Down Expand Up @@ -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>

Expand All @@ -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>

Expand Down
1 change: 1 addition & 0 deletions docs/Publishing Artifacts.md
Original file line number Diff line number Diff line change
Expand Up @@ -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>

Expand Down
19 changes: 10 additions & 9 deletions packages/electron-builder-http/src/httpExecutor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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})`))
Expand Down Expand Up @@ -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
Expand Up @@ -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",
Expand Down
2 changes: 1 addition & 1 deletion test/src/nsisUpdaterTest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down

0 comments on commit d7a6760

Please sign in to comment.