@@ -10,7 +10,13 @@ export const NET_SESSION_NAME = "electron-updater"
10
10
11
11
const debug = _debug ( "electron-builder" )
12
12
13
+ export type LoginCallback = ( username : string , password : string ) => void
14
+
13
15
export class ElectronHttpExecutor extends HttpExecutor < Electron . RequestOptions , Electron . ClientRequest > {
16
+ constructor ( private proxyLoginCallback ?: ( authInfo : Electron . LoginAuthInfo , callback : LoginCallback ) => void ) {
17
+ super ( )
18
+ }
19
+
14
20
async download ( url : string , destination : string , options : DownloadOptions ) : Promise < string > {
15
21
if ( options == null || ! options . skipDirCreation ) {
16
22
await ensureDir ( path . dirname ( destination ) )
@@ -40,16 +46,17 @@ export class ElectronHttpExecutor extends HttpExecutor<Electron.RequestOptions,
40
46
if ( debug . enabled ) {
41
47
debug ( `request: ${ dumpRequestOptions ( options ) } ` )
42
48
}
43
-
49
+
44
50
return cancellationToken . createPromise < T > ( ( resolve , reject , onCancel ) => {
45
- const request = net . request ( options , response => {
51
+ const request = net . request ( Object . assign ( { session : session . fromPartition ( NET_SESSION_NAME ) } , options ) , response => {
46
52
try {
47
53
this . handleResponse ( response , options , cancellationToken , resolve , reject , redirectCount , requestProcessor )
48
54
}
49
55
catch ( e ) {
50
56
reject ( e )
51
57
}
52
58
} )
59
+ this . addProxyLoginHandler ( request )
53
60
this . addTimeOutHandler ( request , reject )
54
61
request . on ( "error" , reject )
55
62
requestProcessor ( request , reject )
@@ -59,7 +66,14 @@ export class ElectronHttpExecutor extends HttpExecutor<Electron.RequestOptions,
59
66
60
67
61
68
protected doRequest ( options : any , callback : ( response : any ) => void ) : any {
62
- options . session = session . fromPartition ( NET_SESSION_NAME )
63
- return net . request ( options , callback )
69
+ const request = net . request ( Object . assign ( { session : session . fromPartition ( NET_SESSION_NAME ) } , options ) , callback )
70
+ this . addProxyLoginHandler ( request )
71
+ return request
72
+ }
73
+
74
+ private addProxyLoginHandler ( request : Electron . ClientRequest ) {
75
+ if ( this . proxyLoginCallback != null ) {
76
+ request . on ( "login" , this . proxyLoginCallback )
77
+ }
64
78
}
65
79
}
0 commit comments