Skip to content

cnblogs/GitLabApiClient

 
 

Repository files navigation

GitLabApiClient

GitHub Workflow Status NuGet

GitLabApiClient is a .NET rest client for GitLab API v4.

Main features

  • Targets .NET Standard 2.0
  • Fully async
  • Thread safe.
  • Multi core paging.
  • Simple and natural to use.
  • Handles URL encoding for you

Quick start

Authenticate

// if you have auth token:
var client =  new GitLabClient("https://gitlab.example.com", "your_private_token");
// if you want to use username & password:
var client =  new GitLabClient("https://gitlab.example.com");
await client.LoginAsync("username", "password");

Use it

// create a new issue.
await client.Issues.CreateAsync("group/project", new CreateIssueRequest("issue title"));

// list issues for a project  with specified assignee and labels.
await client.Issues.GetAsync("group/project", o => o.AssigneeId = 100 && o.Labels == new[] { "test-label" });

// create a new merge request featureBranch -> master.
await client.MergeRequests.CreateAsync("group/project", new CreateMergeRequest("featureBranch", "master", "Merge request title")
{
    Labels = new[] { "bugfix" },
    Description = "Implement feature"
});

// get a list of projects and find each project's README.
var projects = await Client.Projects.GetAsync();
foreach (var project in projects)
{
    var file = await Client.Files.GetAsync(project, filePath: "README.md", reference: project.DefaultBranch);
    var readme = file.ContentDecoded;
    // mad science goes here
}