1313
1414use std:: { ffi:: OsString , sync:: Arc } ;
1515
16+ use http:: { HeaderMap , HeaderName , HeaderValue } ;
1617use semver:: Version ;
1718use tauri:: {
1819 plugin:: { Builder as PluginBuilder , TauriPlugin } ,
@@ -74,13 +75,15 @@ impl<R: Runtime, T: Manager<R>> UpdaterExt<R> for T {
7475 config,
7576 target,
7677 version_comparator,
78+ headers,
7779 } = self . state :: < UpdaterState > ( ) . inner ( ) ;
7880
7981 let mut builder = UpdaterBuilder :: new (
8082 package_info. name . clone ( ) ,
8183 package_info. version . clone ( ) ,
8284 config. clone ( ) ,
83- ) ;
85+ )
86+ . headers ( headers. clone ( ) ) ;
8487
8588 if let Some ( target) = target {
8689 builder = builder. target ( target) ;
@@ -124,13 +127,15 @@ struct UpdaterState {
124127 target : Option < String > ,
125128 config : Config ,
126129 version_comparator : Option < VersionComparator > ,
130+ headers : HeaderMap ,
127131}
128132
129133#[ derive( Default ) ]
130134pub struct Builder {
131135 target : Option < String > ,
132136 pubkey : Option < String > ,
133137 installer_args : Vec < OsString > ,
138+ headers : HeaderMap ,
134139 default_version_comparator : Option < VersionComparator > ,
135140}
136141
@@ -172,6 +177,26 @@ impl Builder {
172177 self
173178 }
174179
180+ pub fn header < K , V > ( mut self , key : K , value : V ) -> Result < Self >
181+ where
182+ HeaderName : TryFrom < K > ,
183+ <HeaderName as TryFrom < K > >:: Error : Into < http:: Error > ,
184+ HeaderValue : TryFrom < V > ,
185+ <HeaderValue as TryFrom < V > >:: Error : Into < http:: Error > ,
186+ {
187+ let key: std:: result:: Result < HeaderName , http:: Error > = key. try_into ( ) . map_err ( Into :: into) ;
188+ let value: std:: result:: Result < HeaderValue , http:: Error > =
189+ value. try_into ( ) . map_err ( Into :: into) ;
190+ self . headers . insert ( key?, value?) ;
191+
192+ Ok ( self )
193+ }
194+
195+ pub fn headers ( mut self , headers : HeaderMap ) -> Self {
196+ self . headers = headers;
197+ self
198+ }
199+
175200 pub fn default_version_comparator <
176201 F : Fn ( Version , RemoteRelease ) -> bool + Send + Sync + ' static ,
177202 > (
@@ -187,6 +212,7 @@ impl Builder {
187212 let target = self . target ;
188213 let version_comparator = self . default_version_comparator ;
189214 let installer_args = self . installer_args ;
215+ let headers = self . headers ;
190216 PluginBuilder :: < R , Config > :: new ( "updater" )
191217 . setup ( move |app, api| {
192218 let mut config = api. config ( ) . clone ( ) ;
@@ -200,6 +226,7 @@ impl Builder {
200226 target,
201227 config,
202228 version_comparator,
229+ headers,
203230 } ) ;
204231 Ok ( ( ) )
205232 } )
0 commit comments