コード例 #1
0
        public async Task <PackageAddResult> AddAsync(Package package)
        {
            var entity    = PackageEntity.FromPackage(package);
            var operation = TableOperation.Insert(entity);

            try
            {
                await _table.ExecuteAsync(operation);
            }
            catch (StorageException e) when(e.IsAlreadyExistsException())
            {
                return(PackageAddResult.PackageAlreadyExists);
            }

            return(PackageAddResult.Success);
        }
コード例 #2
0
ファイル: TableSearchService.cs プロジェクト: vjacquet/BaGet
        private SearchResult ToSearchResult(IReadOnlyList <PackageEntity> packages)
        {
            NuGetVersion  latestVersion  = null;
            PackageEntity latest         = null;
            var           versions       = new List <SearchResultVersion>();
            long          totalDownloads = 0;

            foreach (var package in packages)
            {
                var version = NuGetVersion.Parse(package.OriginalVersion);

                totalDownloads += package.Downloads;
                versions.Add(new SearchResultVersion
                {
                    RegistrationLeafUrl = _url.GetRegistrationLeafUrl(package.Id, version),
                    Version             = package.NormalizedVersion,
                    Downloads           = package.Downloads,
                });

                if (latestVersion == null || version > latestVersion)
                {
                    latest        = package;
                    latestVersion = version;
                }
            }

            var iconUrl = latest.HasEmbeddedIcon
                ? _url.GetPackageIconDownloadUrl(latest.Id, latestVersion)
                : latest.IconUrl;

            return(new SearchResult
            {
                PackageId = latest.Id,
                Version = latest.NormalizedVersion,
                Description = latest.Description,
                Authors = JsonConvert.DeserializeObject <string[]>(latest.Authors),
                IconUrl = iconUrl,
                LicenseUrl = latest.LicenseUrl,
                ProjectUrl = latest.ProjectUrl,
                RegistrationIndexUrl = _url.GetRegistrationIndexUrl(latest.Id),
                Summary = latest.Summary,
                Tags = JsonConvert.DeserializeObject <string[]>(latest.Tags),
                Title = latest.Title,
                TotalDownloads = totalDownloads,
                Versions = versions,
            });
        }
コード例 #3
0
        public TableOperation AddPackage(Package package)
        {
            if (package == null)
            {
                throw new ArgumentNullException(nameof(package));
            }

            var version           = package.Version;
            var normalizedVersion = version.ToNormalizedString();

            var entity = new PackageEntity
            {
                PartitionKey = package.Id.ToLowerInvariant(),
                RowKey       = normalizedVersion.ToLowerInvariant(),

                Id = package.Id,
                NormalizedVersion        = normalizedVersion,
                OriginalVersion          = version.ToFullString(),
                Authors                  = JsonConvert.SerializeObject(package.Authors),
                Description              = package.Description,
                Downloads                = package.Downloads,
                HasReadme                = package.HasReadme,
                HasEmbeddedIcon          = package.HasEmbeddedIcon,
                IsPrerelease             = package.IsPrerelease,
                Language                 = package.Language,
                Listed                   = package.Listed,
                MinClientVersion         = package.MinClientVersion,
                Published                = package.Published,
                RequireLicenseAcceptance = package.RequireLicenseAcceptance,
                SemVerLevel              = (int)package.SemVerLevel,
                Summary                  = package.Summary,
                Title            = package.Title,
                IconUrl          = package.IconUrlString,
                LicenseUrl       = package.LicenseUrlString,
                ReleaseNotes     = package.ReleaseNotes,
                ProjectUrl       = package.ProjectUrlString,
                RepositoryUrl    = package.RepositoryUrlString,
                RepositoryType   = package.RepositoryType,
                Tags             = JsonConvert.SerializeObject(package.Tags),
                Dependencies     = SerializeList(package.Dependencies, AsDependencyModel),
                PackageTypes     = SerializeList(package.PackageTypes, AsPackageTypeModel),
                TargetFrameworks = SerializeList(package.TargetFrameworks, f => f.Moniker)
            };

            return(TableOperation.Insert(entity));
        }
コード例 #4
0
        private Package AsPackage(PackageEntity entity)
        {
            var targetFrameworks = JsonConvert.DeserializeObject <List <string> >(entity.TargetFrameworks)
                                   .Select(f => new TargetFramework {
                Moniker = f
            })
                                   .ToList();

            return(new Package
            {
                Id = entity.Id,
                NormalizedVersionString = entity.NormalizedVersion,
                OriginalVersionString = entity.OriginalVersion,

                Authors = JsonConvert.DeserializeObject <string[]>(entity.Authors),
                Description = entity.Description,
                Downloads = entity.Downloads,
                HasReadme = entity.HasReadme,
                HasEmbeddedIcon = entity.HasEmbeddedIcon,
                IsPrerelease = entity.IsPrerelease,
                Language = entity.Language,
                Listed = entity.Listed,
                MinClientVersion = entity.MinClientVersion,
                Published = entity.Published,
                RequireLicenseAcceptance = entity.RequireLicenseAcceptance,
                SemVerLevel = (SemVerLevel)entity.SemVerLevel,
                Summary = entity.Summary,
                Title = entity.Title,
                ReleaseNotes = entity.ReleaseNotes,
                IconUrl = ParseUri(entity.IconUrl),
                LicenseUrl = ParseUri(entity.LicenseUrl),
                ProjectUrl = ParseUri(entity.ProjectUrl),
                RepositoryUrl = ParseUri(entity.RepositoryUrl),
                RepositoryType = entity.RepositoryType,
                Tags = JsonConvert.DeserializeObject <string[]>(entity.Tags),
                Dependencies = ParseDependencies(entity.Dependencies),
                PackageTypes = ParsePackageTypes(entity.PackageTypes),
                TargetFrameworks = targetFrameworks,
            });
        }