Skip to content

Commit d823565

Browse files
committed
feat(provider/github): Auth token support
1 parent 2163c5c commit d823565

File tree

1 file changed

+49
-1
lines changed

1 file changed

+49
-1
lines changed

src/websdk/repo/provider/github.rs

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

2843
impl 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

Comments
 (0)