@@ -23,6 +23,21 @@ impl GitHubProvider {
2323 pub fn new ( ) -> Self {
2424 GitHubProvider { }
2525 }
26+
27+ fn get_token_header ( & self , fin : & FIn ) -> HashMap < String , String > {
28+ let mut map = HashMap :: new ( ) ;
29+ // check if token is empty or blank
30+ let token = fin
31+ . data_map
32+ . hub_data
33+ . get ( "token" )
34+ . filter ( |t| !t. trim ( ) . is_empty ( ) )
35+ . or_else ( || fin. data_map . app_data . get ( "token" ) ) ;
36+ if let Some ( token) = token {
37+ map. insert ( "Authorization" . to_string ( ) , format ! ( "Bearer {}" , token) ) ;
38+ }
39+ return map;
40+ }
2641}
2742
2843impl BaseProviderExt for GitHubProvider { }
@@ -74,7 +89,9 @@ impl BaseProvider for GitHubProvider {
7489 if let Ok ( parsed_url) = url. parse ( ) {
7590 let header_map = {
7691 let mut map = HashMap :: new ( ) ;
77- map. insert ( "User-Agent" . to_string ( ) , "Awesome-Octocat-App" . to_string ( ) ) ;
92+ map. insert ( "User-Agent" . to_string ( ) , "UpgradeAll-App" . to_string ( ) ) ;
93+ let token_map = self . get_token_header ( fin) ;
94+ map. extend ( token_map) ;
7895 map
7996 } ;
8097 if let Ok ( rsp) = get ( parsed_url, & header_map) . await {
@@ -210,4 +227,35 @@ mod tests {
210227 let releases_saved = serde_json:: from_str :: < Vec < ReleaseData > > ( & release_json) . unwrap ( ) ;
211228 assert_eq ! ( releases, releases_saved)
212229 }
230+
231+ #[ tokio:: test]
232+ async fn test_get_releases_token ( ) {
233+ let mut id_map = AppDataMap :: from ( [ ( "owner" , "DUpdateSystem" ) , ( "repo" , "UpgradeAll" ) ] ) ;
234+ let test_token = std:: env:: var ( "GITHUB_TOKEN" ) ;
235+ if test_token. is_err ( ) {
236+ return ;
237+ }
238+ let test_token = test_token. unwrap ( ) ;
239+ let hub_data = HubDataMap :: from ( [ ( "token" , test_token. as_str ( ) ) ] ) ;
240+
241+ let github_provider = GitHubProvider :: new ( ) ;
242+ let releases = github_provider
243+ . get_releases ( & FIn :: new_with_frag ( & id_map, & hub_data, None ) )
244+ . await
245+ . result
246+ . unwrap ( ) ;
247+
248+ assert ! ( !releases. is_empty( ) ) ;
249+
250+ let hub_data = HubDataMap :: from ( [ ( "token" , " " ) ] ) ;
251+ id_map. insert ( "token" , & test_token) ;
252+
253+ let releases = github_provider
254+ . get_releases ( & FIn :: new_with_frag ( & id_map, & hub_data, None ) )
255+ . await
256+ . result
257+ . unwrap ( ) ;
258+
259+ assert ! ( !releases. is_empty( ) ) ;
260+ }
213261}
0 commit comments