/// <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)); }
protected IQueryable <ODataPackage> TransformPackages( IEnumerable <IServerPackage> packages, ClientCompatibility compatibility) { return(packages .Distinct() .Select(x => x.AsODataPackage(compatibility)) .AsQueryable() .InterceptWith(new NormalizeVersionInterceptor())); }
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 }); }
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 }); }
private IHttpActionResult TransformToQueryResult(ODataQueryOptions <ODataPackage> options, IEnumerable <INuGetPackage> sourceQuery, ClientCompatibility compatibility) { return(QueryResult(options, sourceQuery.Distinct().Select(x => x.AsODataPackage(compatibility)).AsQueryable(), MaxPageSize)); }