pub struct Client { /* private fields */ }Expand description
Blocking GitHub REST client.
Implementations§
Source§impl Client
impl Client
Sourcepub fn new(base_url: &str, token: &str) -> Result<Self, Box<dyn Error>>
pub fn new(base_url: &str, token: &str) -> Result<Self, Box<dyn Error>>
Build a client for base_url (typically
https://api.github.com, or a GHES instance’s /api/v3
endpoint) authenticated with the given personal access
token.
Sourcepub fn user_by_username(
&self,
username: &str,
) -> Result<Option<User>, Box<dyn Error>>
pub fn user_by_username( &self, username: &str, ) -> Result<Option<User>, Box<dyn Error>>
Resolve a username to its full user object. Returns None
when the API responds with 404 (no such user); other
errors are returned as Err.
Sourcepub fn search_pull_requests(
&self,
query: &str,
) -> Result<Vec<PullRequest>, Box<dyn Error>>
pub fn search_pull_requests( &self, query: &str, ) -> Result<Vec<PullRequest>, Box<dyn Error>>
Run the Search Issues endpoint with the caller-supplied query string and return every PR across all result pages.
GitHub caps Search results at 1000 items total; if a query exceeds that, the caller needs to narrow it (e.g. by splitting the date window).
Sourcepub fn user_events(&self, username: &str) -> Result<Vec<Event>, Box<dyn Error>>
pub fn user_events(&self, username: &str) -> Result<Vec<Event>, Box<dyn Error>>
Paginate through the user-events endpoint up to GitHub’s 300-event cap. Returns the most recent events first.
Count commits in owner/repo authored by author within
[since, until] (inclusive). Used as a cross-check
against push-event counts — see the GitLab equivalent
for the rationale.
404 and 409 responses are treated as “0 commits” rather than errors. 404 means the repo was deleted or made private between the events scan and this call; 409 means the repo exists but is empty. Either way, a single missing repo shouldn’t abort the surrounding report. The trade-off: real auth failures targeting a single repo would also be hidden, but GitHub returns 401/403 for those, not 404/409.
Sourcepub fn list_tag_refs(
&self,
owner: &str,
repo: &str,
) -> Result<Vec<GitTagRef>, Box<dyn Error>>
pub fn list_tag_refs( &self, owner: &str, repo: &str, ) -> Result<Vec<GitTagRef>, Box<dyn Error>>
List all tag refs for owner/repo. Returns an empty list
on 404 (gone repo) and 409 (empty repo) so callers can
iterate over many repos without per-repo error handling.
Sourcepub fn get_annotated_tag(
&self,
owner: &str,
repo: &str,
sha: &str,
) -> Result<AnnotatedTag, Box<dyn Error>>
pub fn get_annotated_tag( &self, owner: &str, repo: &str, sha: &str, ) -> Result<AnnotatedTag, Box<dyn Error>>
Fetch one annotated-tag object by SHA. Use only when the
matching GitTagRef.object.object_type == "tag" —
lightweight tags (where object_type == "commit") have no
addressable tag object and this endpoint will 404.