Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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));
        }