@@ -93,6 +93,7 @@ impl RemoteRelease {
93
93
}
94
94
95
95
pub type OnBeforeExit = Arc < dyn Fn ( ) + Send + Sync + ' static > ;
96
+ pub type OnBeforeRequest = Arc < dyn Fn ( ClientBuilder ) -> ClientBuilder + Send + Sync + ' static > ;
96
97
pub type VersionComparator = Arc < dyn Fn ( Version , RemoteRelease ) -> bool + Send + Sync > ;
97
98
type MainThreadClosure = Box < dyn FnOnce ( ) + Send + Sync + ' static > ;
98
99
type RunOnMainThread =
@@ -114,6 +115,7 @@ pub struct UpdaterBuilder {
114
115
installer_args : Vec < OsString > ,
115
116
current_exe_args : Vec < OsString > ,
116
117
on_before_exit : Option < OnBeforeExit > ,
118
+ on_before_request : Option < OnBeforeRequest > ,
117
119
}
118
120
119
121
impl UpdaterBuilder {
@@ -140,6 +142,7 @@ impl UpdaterBuilder {
140
142
timeout : None ,
141
143
proxy : None ,
142
144
on_before_exit : None ,
145
+ on_before_request : None ,
143
146
}
144
147
}
145
148
@@ -239,6 +242,11 @@ impl UpdaterBuilder {
239
242
self
240
243
}
241
244
245
+ pub fn on_before_request < F : Fn ( ClientBuilder ) -> ClientBuilder + Send + Sync + ' static > ( mut self , f : F ) -> Self {
246
+ self . on_before_request . replace ( Arc :: new ( f) ) ;
247
+ self
248
+ }
249
+
242
250
pub fn build ( self ) -> Result < Updater > {
243
251
let endpoints = self
244
252
. endpoints
@@ -282,6 +290,7 @@ impl UpdaterBuilder {
282
290
headers : self . headers ,
283
291
extract_path,
284
292
on_before_exit : self . on_before_exit ,
293
+ on_before_request : self . on_before_request ,
285
294
} )
286
295
}
287
296
}
@@ -316,6 +325,7 @@ pub struct Updater {
316
325
headers : HeaderMap ,
317
326
extract_path : PathBuf ,
318
327
on_before_exit : Option < OnBeforeExit > ,
328
+ on_before_request : Option < OnBeforeRequest > ,
319
329
#[ allow( unused) ]
320
330
installer_args : Vec < OsString > ,
321
331
#[ allow( unused) ]
@@ -376,6 +386,11 @@ impl Updater {
376
386
let proxy = reqwest:: Proxy :: all ( proxy. as_str ( ) ) ?;
377
387
request = request. proxy ( proxy) ;
378
388
}
389
+
390
+ if let Some ( ref on_before_request) = self . on_before_request {
391
+ request = on_before_request ( request) ;
392
+ }
393
+
379
394
let response = request
380
395
. build ( ) ?
381
396
. get ( url)
0 commit comments