Skip to content
Branch: master
Find file History
loic-sharma [Client SDK] Use synchronous client factory methods (#371)
Make `NuGetClientFactory`'s methods synchronous to simplify dependency injection. This is a breaking change.

Previously, clients created by the `NuGetClientFactory` had to be discarded to reload the service index if necessary. Now, clients created will automatically reload the service index as necessary.
Latest commit 61d330a Oct 6, 2019

readme.md

BaGet.Protocol

Build Status Join the chat at https://gitter.im/BaGetServer/community Nuget

BaGet's SDK to interact with the NuGet protocol.

Package (NuGet) | Documentation | Samples

Getting started

Install the package

dotnet add package BaGet.Protocol

Examples

List Package Versions

Find all versions of the Newtonsoft.Json package:

NuGetClient client = new NuGetClient("https://api.nuget.org/v3/index.json");

IReadOnlyList<NuGetVersion>> versions = await client.ListPackageVersionsAsync("Newtonsoft.Json");

foreach (NuGetVersion version in versions)
{
    Console.WriteLine($"Found version: {version}");
}

Download a package

NuGetClient client = new NuGetClient("https://api.nuget.org/v3/index.json");

string packageId = "Newtonsoft.Json";
NuGetVersion packageVersion = new NuGetVersion("12.0.1");

using (Stream packageStream = await client.GetPackageStreamAsync(packageId, packageVersion))
{
    Console.WriteLine($"Downloaded package {packageId} {packageVersion}");
}

Find Package Metadata

NuGetClient client = new NuGetClient("https://api.nuget.org/v3/index.json");

// Find the metadata for all versions of a package.
IReadOnlyList<PackageMetadata> items = await client.GetPackageMetadataAsync("Newtonsoft.Json");
if (!items.Any())
{
    Console.WriteLine($"Package 'Newtonsoft.Json' does not exist");
    return;
}

foreach (var metadata in items)
{
    Console.WriteLine($"Version: {metadata.Version}");
    Console.WriteLine($"Listed: {metadata.Listed}");
    Console.WriteLine($"Tags: {metadata.Tags}");
    Console.WriteLine($"Description: {metadata.Description}");
}

// Or, find the metadata for a single version of a package.
string packageId = "Newtonsoft.Json"
NuGetVersion packageVersion = new NuGetVersion("12.0.1");

PackageMetadata metadata = await client.GetPackageMetadataAsync(packageId, packageVersion);

Console.WriteLine($"Listed: {metadata.Listed}");
Console.WriteLine($"Tags: {metadata.Tags}");
Console.WriteLine($"Description: {metadata.Description}");

Search for packages

Search for "json" packages:

NuGetClient client = new NuGetClient("https://api.nuget.org/v3/index.json");
IReadOnlyList<SearchResult> results = await client.SearchAsync("json");

foreach (SearchResult result in results)
{
    Console.WriteLine($"Found package {result.PackageId} {searchResult.Version}");
}
You can’t perform that action at this time.