@@ -7,6 +7,7 @@ import { parse as parseUrl } from "url"
7
7
import { AppUpdater } from "./AppUpdater"
8
8
import { DOWNLOAD_PROGRESS , FileInfo , UPDATE_DOWNLOADED } from "./main"
9
9
import AutoUpdater = Electron . AutoUpdater
10
+ import { RequestHeaders } from "../../electron-builder-http/src/httpExecutor"
10
11
11
12
export class MacUpdater extends AppUpdater {
12
13
private readonly nativeUpdater : AutoUpdater = require ( "electron" ) . autoUpdater
@@ -38,11 +39,13 @@ export class MacUpdater extends AppUpdater {
38
39
return new BluebirdPromise < void > ( ( resolve , reject ) => {
39
40
server . on ( "request" , ( request : IncomingMessage , response : ServerResponse ) => {
40
41
const requestUrl = request . url !
42
+ this . _logger . info ( `${ requestUrl } requested` )
41
43
if ( requestUrl === "/" ) {
42
- response . writeHead ( 200 , { "Content-Type" : "application/json" } )
43
- response . end ( `{ "url": "${ getServerUrl ( ) } /app.zip" }` )
44
+ const data = Buffer . from ( `{ "url": "${ getServerUrl ( ) } /app.zip" }` )
45
+ response . writeHead ( 200 , { "Content-Type" : "application/json" , "Content-Length" : data . length } )
46
+ response . end ( data )
44
47
}
45
- else if ( requestUrl === "/app.zip" ) {
48
+ else if ( requestUrl . startsWith ( "/app.zip" ) ) {
46
49
let errorOccurred = false
47
50
response . on ( "finish" , ( ) => {
48
51
try {
@@ -66,6 +69,7 @@ export class MacUpdater extends AppUpdater {
66
69
} )
67
70
}
68
71
else {
72
+ this . _logger . warn ( `${ requestUrl } requested, but not supported` )
69
73
response . writeHead ( 404 )
70
74
response . end ( )
71
75
}
@@ -78,8 +82,6 @@ export class MacUpdater extends AppUpdater {
78
82
}
79
83
80
84
private proxyUpdateFile ( nativeResponse : ServerResponse , fileInfo : FileInfo , errorHandler : ( error : Error ) => void ) {
81
- nativeResponse . writeHead ( 200 , { "Content-Type" : "application/zip" } )
82
-
83
85
const parsedUrl = parseUrl ( fileInfo . url )
84
86
const downloadRequest = this . httpExecutor . doRequest ( configureRequestOptions ( {
85
87
protocol : parsedUrl . protocol ,
@@ -99,14 +101,18 @@ export class MacUpdater extends AppUpdater {
99
101
return
100
102
}
101
103
104
+ const headers : RequestHeaders = { "Content-Type" : "application/zip" }
102
105
const streams : Array < any > = [ ]
103
106
if ( this . listenerCount ( DOWNLOAD_PROGRESS ) > 0 ) {
104
107
const contentLength = safeGetHeader ( downloadResponse , "content-length" )
105
108
if ( contentLength != null ) {
109
+ headers [ "Content-Length" ] = contentLength
106
110
streams . push ( new ProgressCallbackTransform ( parseInt ( contentLength , 10 ) , new CancellationToken ( ) , it => this . emit ( DOWNLOAD_PROGRESS , it ) ) )
107
111
}
108
112
}
109
113
114
+ nativeResponse . writeHead ( 200 , headers )
115
+
110
116
// for mac only sha512 is produced (sha256 is published for windows only to preserve backward compatibility)
111
117
const sha512 = fileInfo . sha512
112
118
if ( sha512 != null ) {
0 commit comments