Skip to content

Commit a08f44d

Browse files
committed
github: Add get_user(name) fn
1 parent 70dfb3b commit a08f44d

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

crates/crates_io_github/examples/test_github_client.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ enum Request {
1212
#[clap(long, env = "GITHUB_ACCESS_TOKEN", hide_env_values = true)]
1313
access_token: SecretString,
1414
},
15+
GetUser {
16+
name: String,
17+
#[clap(long, env = "GITHUB_ACCESS_TOKEN", hide_env_values = true)]
18+
access_token: SecretString,
19+
},
1520
OrgByName {
1621
org_name: String,
1722
#[clap(long, env = "GITHUB_ACCESS_TOKEN", hide_env_values = true)]
@@ -58,6 +63,11 @@ async fn main() -> Result<()> {
5863
let response = github_client.current_user(&access_token).await?;
5964
println!("{response:#?}");
6065
}
66+
Request::GetUser { name, access_token } => {
67+
let access_token = AccessToken::new(access_token.expose_secret().into());
68+
let response = github_client.get_user(&name, &access_token).await?;
69+
println!("{response:#?}");
70+
}
6171
Request::OrgByName {
6272
org_name,
6373
access_token,

crates/crates_io_github/src/lib.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ type Result<T> = std::result::Result<T, GitHubError>;
2020
#[async_trait]
2121
pub trait GitHubClient: Send + Sync {
2222
async fn current_user(&self, auth: &AccessToken) -> Result<GitHubUser>;
23+
async fn get_user(&self, name: &str, auth: &AccessToken) -> Result<GitHubUser>;
2324
async fn org_by_name(&self, org_name: &str, auth: &AccessToken) -> Result<GitHubOrganization>;
2425
async fn team_by_name(
2526
&self,
@@ -102,6 +103,11 @@ impl GitHubClient for RealGitHubClient {
102103
self.request("/user", auth).await
103104
}
104105

106+
async fn get_user(&self, name: &str, auth: &AccessToken) -> Result<GitHubUser> {
107+
let url = format!("/users/{name}");
108+
self.request(&url, auth).await
109+
}
110+
105111
async fn org_by_name(&self, org_name: &str, auth: &AccessToken) -> Result<GitHubOrganization> {
106112
let url = format!("/orgs/{org_name}");
107113
self.request(&url, auth).await

0 commit comments

Comments
 (0)