public async Task <IEnumerable <string> > GetSuggestionsAsync(IComponentConfiguration config) { var credentialName = config["CredentialName"]; if (string.IsNullOrEmpty(credentialName)) { return(Enumerable.Empty <string>()); } var productCredentials = ResourceCredentials.TryCreate <InedoProductCredentials>(credentialName); if (productCredentials != null) { var url = new Uri(productCredentials.Host, UriKind.Absolute).GetLeftPart(UriPartial.Authority); var c = new ProGetClient(url, null, "api", AH.Unprotect(productCredentials.ApiKey)); return(await c.GetFeedNamesAsync().ConfigureAwait(false)); } #pragma warning disable CS0618 // Type or member is obsolete var credentials = ResourceCredentials.Create <ProGetCredentials>(credentialName); #pragma warning restore CS0618 // Type or member is obsolete string baseUrl = new Uri(credentials.Url, UriKind.Absolute).GetLeftPart(UriPartial.Authority); var client = new ProGetClient(baseUrl, null, credentials.UserName, AH.Unprotect(credentials.Password)); return(await client.GetFeedNamesAsync().ConfigureAwait(false)); }
public async Task <IEnumerable <string> > GetSuggestionsAsync(IComponentConfiguration config) { var credentialName = config["CredentialName"]; var feedName = config["FeedName"]; if (string.IsNullOrEmpty(credentialName) || string.IsNullOrEmpty(feedName)) { return(Enumerable.Empty <string>()); } ProGetClient client = null; var productCredentials = ResourceCredentials.TryCreate <InedoProductCredentials>(credentialName); if (productCredentials != null) { client = new ProGetClient(productCredentials.Host, feedName, "api", AH.Unprotect(productCredentials.ApiKey)); } if (client == null) { #pragma warning disable CS0618 // Type or member is obsolete var credentials = ResourceCredentials.Create <ProGetCredentials>(credentialName); #pragma warning restore CS0618 // Type or member is obsolete client = new ProGetClient(credentials.Url, feedName, credentials.UserName, AH.Unprotect(credentials.Password)); } var packages = await client.GetPackagesAsync().ConfigureAwait(false); return(from p in packages let name = new PackageName(p.@group, p.name) orderby name.Group, name.Name select name.ToString()); }
public async Task <IEnumerable <string> > GetSuggestionsAsync(IComponentConfiguration config) { var credentialName = config["CredentialName"]; var feedName = config["FeedName"]; var packageName = config["PackageName"]; if (string.IsNullOrEmpty(credentialName) || string.IsNullOrEmpty(feedName) || string.IsNullOrEmpty(packageName)) { return(Enumerable.Empty <string>()); } ProGetClient client = null; var productCredentials = ResourceCredentials.TryCreate <InedoProductCredentials>(credentialName); if (productCredentials != null) { client = new ProGetClient(productCredentials.Host, feedName, "api", AH.Unprotect(productCredentials.ApiKey)); } #pragma warning disable CS0618 // Type or member is obsolete var credentials = ResourceCredentials.Create <ProGetCredentials>(credentialName); #pragma warning restore CS0618 // Type or member is obsolete if (client == null) { client = new ProGetClient(credentials.Url, feedName, credentials.UserName, AH.Unprotect(credentials.Password)); } var package = await client.GetPackageInfoAsync(PackageName.Parse(packageName)); return(new[] { "latest", "latest-stable" }.Concat(package.versions)); }
public static async Task <Error> NpmDeletePackageAsync(this NpmClient client, string packageId, string version) { var uri = new Uri(client.Uri); var hostUri = uri.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped); var feedName = uri.Segments.Last().Replace("/", ""); var sourceClient = new ProGetClient(hostUri, client.ApiKey); var sourceFeeds = await sourceClient.Feeds_GetFeedsAsync(false); var sourceFeed = sourceFeeds.SingleOrDefault(f => f.Feed_Name.Equals(feedName, StringComparison.CurrentCultureIgnoreCase)); if (sourceFeed == null) { return(new Error(HttpStatusCode.NotFound, $"NPM Feed not found {client.FeedName} on {client.Uri}")); } var(name, scope) = ParseNpmId(packageId); var result = await sourceClient.NpmPackages_DeletePackageAsync(sourceFeed.Feed_Id, name, scope, version); if (result) { return(null); } return(new Error(HttpStatusCode.ServiceUnavailable, "Error")); }
public async Task GetLatestPackageVersion_NonExistingPackage_ReturnsNull() { var client = new ProGetClient(); var versions = await client.GetPackageVersions("Newtonsoft.Json"); Assert.IsTrue(!versions.Any()); }
public async Task GetLatestPackageVersion_BotModelsPackage_ReturnsLatestVersion() { var client = new ProGetClient(); var versions = await client.GetPackageVersions("If.ClaimsForms.Bot.Models"); Assert.IsNotNull(versions); }
public async Task <IEnumerable <string> > GetSuggestionsAsync(IComponentConfiguration config) { var credentialName = config["CredentialName"]; if (string.IsNullOrEmpty(credentialName)) { return(Enumerable.Empty <string>()); } var credentials = ResourceCredentials.Create <ProGetCredentials>(credentialName); string baseUrl = new Uri(credentials.Url, UriKind.Absolute).GetLeftPart(UriPartial.Authority); var client = new ProGetClient(baseUrl, null, credentials.UserName, ConvertValue(credentials.Password)); return(await client.GetFeedNamesAsync().ConfigureAwait(false)); }
public async Task <IEnumerable <string> > GetSuggestionsAsync(IComponentConfiguration config) { var credentialName = config["CredentialName"]; var feedName = config["FeedName"]; var packageName = config["PackageName"]; if (string.IsNullOrEmpty(credentialName) || string.IsNullOrEmpty(feedName) || string.IsNullOrEmpty(packageName)) { return(Enumerable.Empty <string>()); } var credentials = ResourceCredentials.Create <ProGetCredentials>(credentialName); var client = new ProGetClient(credentials.Url, feedName, credentials.UserName, ConvertValue(credentials.Password)); var package = await client.GetPackageInfoAsync(PackageName.Parse(packageName)); return(new[] { "latest" }.Concat(package.versions)); }
public async Task <IEnumerable <string> > GetSuggestionsAsync(IComponentConfiguration config) { var credentialName = config["CredentialName"]; var feedName = config["FeedName"]; if (string.IsNullOrEmpty(credentialName) || string.IsNullOrEmpty(feedName)) { return(Enumerable.Empty <string>()); } var credentials = ResourceCredentials.Create <ProGetCredentials>(credentialName); var client = new ProGetClient(credentials.Url, feedName, credentials.UserName, ConvertValue(credentials.Password)); var packages = await client.GetPackagesAsync().ConfigureAwait(false); return(from p in packages let name = new PackageName(p.@group, p.name) orderby name.Group, name.Name select name.ToString()); }
public ProGetClientShould() { _client = new ProGetClient("http://mbp:82", "12345"); }
public static async Task <(IEnumerable <Package> Packages, Error Error)> NpmFetchPackagesAsync(this NpmClient client, string searchTerm, bool includePreRelease, bool downloadPackageContent) { var uri = new Uri(client.Uri); var hostUri = uri.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped); var feedName = uri.Segments.Last().Replace("/", ""); var sourceClient = new ProGetClient(hostUri, client.ApiKey); Feed sourceFeed; try { sourceFeed = (await sourceClient.Feeds_GetFeedsAsync(false)) .SingleOrDefault(f => f.Feed_Name.Equals(feedName, StringComparison.CurrentCultureIgnoreCase)); } catch (FlurlHttpException ex) { var statusCode = ex.Message.Contains("403") ? HttpStatusCode.Forbidden : HttpStatusCode.NotFound; return(null, new Error(statusCode, ex.Message)); } if (sourceFeed == null) { return(null, new Error(HttpStatusCode.NotFound, $"Feed not found ({client.FeedName}) on {hostUri}")); } var packageVersions = await sourceClient.NpmFeeds_GetAllPackageVersionsAsync(sourceFeed.Feed_Id); var npmPackageVersionsArray = packageVersions as NpmPackageAllVersions[] ?? packageVersions.ToArray(); var tasks = npmPackageVersionsArray .Select(p => ConvertNpmPackageVersionToPackageAsync(client, p)) .ToArray(); await Task.WhenAll(tasks); searchTerm ??= string.Empty; var packages = tasks .Select(x => x.Result) .Where(p => p.Id.Contains(searchTerm, StringComparison.InvariantCultureIgnoreCase) && (includePreRelease || !p.IsPrerelease)) .ToList(); if (downloadPackageContent) { foreach (var package in packages) { var(content, error) = await client.NpmDownloadPackageAsync(package); if (error != null) { throw new WebException(error.ErrorMessage); } package.Content = content; } } return(packages, null); }