public async Task <string> GetLatestVersion(string libraryId, bool includePreReleases, CancellationToken cancellationToken) { string latestVersion = null; try { (string name, string version) = _libraryNamingScheme.GetLibraryNameAndVersion(libraryId); string latestLibraryVersionUrl = string.Format(IsGitHub(libraryId) ? LatestLibraryVersionUrlGH : LatestLibraryVersionUrl, name); JObject packageObject = await _webRequestHandler.GetJsonObjectViaGetAsync(latestLibraryVersionUrl, cancellationToken); if (packageObject != null) { var versions = packageObject["tags"] as JObject; var versionValue = versions["latest"] as JValue; latestVersion = versionValue?.Value as string; } } catch (Exception ex) { _logger.Log(ex.ToString(), LogLevel.Error); } return(latestVersion); }
private async Task <IEnumerable <NpmPackageInfo> > GetPackageNamesWithScopeAsync(string searchTerm, CancellationToken cancellationToken) { Debug.Assert(searchTerm.StartsWith("@", StringComparison.Ordinal)); var packages = new List <NpmPackageInfo>(); int slash = searchTerm.IndexOf("/", StringComparison.Ordinal); if (slash > 0) { string scope = searchTerm.Substring(1, slash - 1); string packageName = searchTerm.Substring(slash + 1); // URL encode the values in the query to avoid a BadRequest scope = HttpUtility.UrlEncode(scope); packageName = HttpUtility.UrlEncode(packageName); string searchUrl = string.Format(NpmsPackageSearchUrl, scope, packageName); JObject packageListJsonObject = await _requestHandler.GetJsonObjectViaGetAsync(searchUrl, cancellationToken); if (packageListJsonObject != null) { // We get back something like this: // { // "total":46, // "results": [ // { // "package": { // "name":"@types/d3-selection", // /* lots of other crap */ // } // }, // { // "package": { // "name":"@types/d3-array", // } // }, ... if (packageListJsonObject["results"] is JArray resultsValues) { foreach (JObject packageEntry in resultsValues.Children()) { if (packageEntry != null) { if (packageEntry["package"] is JObject packageDetails) { var packageInfo = NpmPackageInfo.Parse(packageDetails); packages.Add(packageInfo); } } } } } } return(packages); }
public async Task <string> GetLatestVersion(string libraryName, bool includePreReleases, CancellationToken cancellationToken) { string latestVersion = null; try { string latestLibraryVersionUrl = string.Format(LatestLibraryVersonUrl, libraryName); JObject packageObject = await _webRequestHandler.GetJsonObjectViaGetAsync(latestLibraryVersionUrl, cancellationToken); if (packageObject != null) { var versionValue = packageObject["version"] as JValue; latestVersion = versionValue?.Value as string; } } catch (Exception ex) { _logger.Log(ex.ToString(), LogLevel.Error); } return(latestVersion); }
private async Task <NpmPackageInfo> GetPackageInfoForUnscopedPackageAsync(string packageName, CancellationToken cancellationToken) { NpmPackageInfo packageInfo = null; try { string packageInfoUrl = string.Format(NpmLatestPackageInfoUrl, packageName); JObject packageInfoJSON = await _requestHandler.GetJsonObjectViaGetAsync(packageInfoUrl, cancellationToken).ConfigureAwait(false); if (packageInfoJSON != null) { packageInfo = NpmPackageInfo.Parse(packageInfoJSON); } } catch (Exception) { packageInfo = new NpmPackageInfo( packageName, Resources.Text.LibraryDetail_Unavailable, Resources.Text.LibraryDetail_Unavailable); } return(await CreatePackageInfoAsync(packageName, packageInfo, cancellationToken)); }