示例#1
0
        /// <summary>
        /// Transforms IPackages to ODataPackages and generates a QueryResult<ODataPackage></ODataPackage>
        /// </summary>
        /// <param name="options"></param>
        /// <param name="sourceQuery"></param>
        /// <returns></returns>
        protected virtual IHttpActionResult TransformToQueryResult(
            ODataQueryOptions <ODataPackage> options,
            IEnumerable <IServerPackage> sourceQuery,
            ClientCompatibility compatibility)
        {
            var transformedQuery = TransformPackages(sourceQuery, compatibility);

            return(QueryResult(options, transformedQuery, _maxPageSize));
        }
示例#2
0
 protected IQueryable <ODataPackage> TransformPackages(
     IEnumerable <IServerPackage> packages,
     ClientCompatibility compatibility)
 {
     return(packages
            .Distinct()
            .Select(x => x.AsODataPackage(compatibility))
            .AsQueryable()
            .InterceptWith(new NormalizeVersionInterceptor()));
 }
示例#3
0
        public static ODataPackage AsODataPackage(this IPackage package, ClientCompatibility compatibility)
        {
            var serverPackage = package as ServerPackage;

            if (serverPackage != null)
            {
                return(AsODataPackage(serverPackage, compatibility));
            }

            var utcNow = DateTime.UtcNow;

            return(new ODataPackage
            {
                Id = package.Id,
                Version = package.Version.ToString(),
                NormalizedVersion = package.Version.ToNormalizedString(),
                IsPrerelease = !package.IsReleaseVersion(),
                Title = package.Title,
                Authors = string.Join(",", package.Authors),
                Owners = string.Join(",", package.Owners),
                IconUrl = package.IconUrl == null ? null : package.IconUrl.GetComponents(UriComponents.HttpRequestUrl, UriFormat.Unescaped),
                LicenseUrl = package.LicenseUrl == null ? null : package.LicenseUrl.GetComponents(UriComponents.HttpRequestUrl, UriFormat.Unescaped),
                ProjectUrl = package.ProjectUrl == null ? null : package.ProjectUrl.GetComponents(UriComponents.HttpRequestUrl, UriFormat.Unescaped),
                DownloadCount = package.DownloadCount,
                RequireLicenseAcceptance = package.RequireLicenseAcceptance,
                DevelopmentDependency = package.DevelopmentDependency,
                Description = package.Description,
                Summary = package.Summary,
                ReleaseNotes = package.ReleaseNotes,
                Published = package.Published.HasValue ? package.Published.Value.UtcDateTime : utcNow,
                LastUpdated = package.Published.HasValue ? package.Published.Value.UtcDateTime : utcNow,
                Dependencies = string.Join("|", package.DependencySets.SelectMany(ConvertDependencySetToStrings)),
                PackageHash = package.GetHash(Constants.HashAlgorithm),
                PackageHashAlgorithm = Constants.HashAlgorithm,
                PackageSize = package.GetStream().Length,
                Copyright = package.Copyright,
                Tags = package.Tags,
                IsAbsoluteLatestVersion = package.IsAbsoluteLatestVersion,
                IsLatestVersion = package.IsLatestVersion,
                Listed = package.Listed,
                VersionDownloadCount = package.DownloadCount,
                MinClientVersion = package.MinClientVersion == null ? null : package.MinClientVersion.ToString(),
                Language = package.Language
            });
        }
示例#4
0
 public static ODataPackage AsODataPackage(this ServerPackage package, ClientCompatibility compatibility)
 {
     return(new ODataPackage
     {
         Id = package.Id,
         Version = package.Version.ToString(),
         NormalizedVersion = package.Version.ToNormalizedString(),
         IsPrerelease = !package.IsReleaseVersion(),
         Title = package.Title,
         Authors = string.Join(",", package.Authors),
         Owners = string.Join(",", package.Owners),
         IconUrl = package.IconUrl == null ? null : package.IconUrl.GetComponents(UriComponents.HttpRequestUrl, UriFormat.Unescaped),
         LicenseUrl = package.LicenseUrl == null ? null : package.LicenseUrl.GetComponents(UriComponents.HttpRequestUrl, UriFormat.Unescaped),
         ProjectUrl = package.ProjectUrl == null ? null : package.ProjectUrl.GetComponents(UriComponents.HttpRequestUrl, UriFormat.Unescaped),
         DownloadCount = package.DownloadCount,
         RequireLicenseAcceptance = package.RequireLicenseAcceptance,
         DevelopmentDependency = package.DevelopmentDependency,
         Description = package.Description,
         Summary = package.Summary,
         ReleaseNotes = package.ReleaseNotes,
         Published = package.Created.UtcDateTime,
         LastUpdated = package.LastUpdated.UtcDateTime,
         Dependencies = string.Join("|", package.DependencySets.SelectMany(ConvertDependencySetToStrings)),
         PackageHash = package.PackageHash,
         PackageHashAlgorithm = package.PackageHashAlgorithm,
         PackageSize = package.PackageSize,
         Copyright = package.Copyright,
         Tags = package.Tags,
         IsAbsoluteLatestVersion = compatibility.AllowSemVer2 ? package.SemVer2IsAbsoluteLatest : package.SemVer1IsAbsoluteLatest,
         IsLatestVersion = compatibility.AllowSemVer2 ? package.SemVer2IsLatest : package.SemVer1IsLatest,
         Listed = package.Listed,
         VersionDownloadCount = package.DownloadCount,
         MinClientVersion = package.MinClientVersion == null ? null : package.MinClientVersion.ToString(),
         Language = package.Language
     });
 }
示例#5
0
 private IHttpActionResult TransformToQueryResult(ODataQueryOptions <ODataPackage> options, IEnumerable <INuGetPackage> sourceQuery, ClientCompatibility compatibility)
 {
     return(QueryResult(options, sourceQuery.Distinct().Select(x => x.AsODataPackage(compatibility)).AsQueryable(), MaxPageSize));
 }