A simple API in terms of querying github with C#, based on RestSharp.
using Git.hub;
Client client = new Client();
The recommended way to login is to use OAuth tokens provided by Github, as detailed on the API docs.
client.setOAuth2Token("0fd...");
You could, for example, display a webbrowser control to navigate to the
site and listen to the related events for when a redirect to your
given site happens, use the ?code=<code>
with the following line:
OAuth2Helper.requestToken(client_id, client_secret, <code>
Albeit not recommended, logging in with Username and Password is possible:
client.setCredentials("mabako", "super duper password");
To retrieve the currently logged in user, use the following:
User user = client.getUser();
To fetch repositories, the following lines of code should suffice your needs:
IList<Repository> repos = client.getRepositories("mabako");
IList<Repository> orgRepos = client.getOrganizationRepositories("github");
Repository repo = client.getRepository("mabako", "Git.hub");
/* Requires login */
IList<Repository> ownRepos = client.getRepositories();
Please take note that the latter includes all repositories you have access to, if you certainly want your own repos only filter for Repository.Owner.Login.
Fork the repo:
Repository forked = repo.CreateFork();
List branches:
IList<Branch> branches = repo.GetBranches();
You can fetch all of the repo's pull requests or just one, use as fit.
IList<PullRequest> pullrequests = repo.GetPullRequests();
PullRequest pullrequest = repo.GetPullRequest(1);
Alternatively, a new pull request may be created with:
var pullrequest = repo.CreatePullRequest("mabako:new-feature", "master", "Subject", "Details...");
Take note that 'repo' is the repo in which the pull request is created, your own username is usually in the first parameter, along with your branch.
A few basic actions on pull requests are defined:
pullrequest.GetCommits();
pullrequest.Open();
pullrequest.Close();
/* This is the same */
var issue = pullrequest.ToIssue();
issue.GetComments();
pullrequest.GetIssueComments()
To reply to a pull request, fetch the issue first with ToIssue() and use
issue.CreateComment("My comment");