public async Task <IActionResult> UnpublishPackageAsync(string package, string revision)
        {
            var overview = await _packageService.GetPackageAsync(PackageUtils.UnescapeName(package));

            if (overview == null)
            {
                return(PackageNotFoundResponse);
            }

            var patch = new PackagePatch()
            {
                DeletedVersions = overview.Versions.Select(v => v.Id).ToList()
            };

            await _packageService.CommitAsync(overview.Name, patch);

            return(Ok("removed all package versions"));
        }
        private static PackagePatch ToPatch(UpdatePackageViewModel vm)
        {
            var patch = new PackagePatch()
            {
                UpdatedVersions   = new List <PackageVersion>(),
                PublishedVersions = new List <PublishedPackageVersion>(),
                UpdatedDistTags   = vm.DistTags
            };

            foreach (var kvp in vm.Versions)
            {
                var id = new PackageIdentifier(vm.Name, kvp.Key);

                var version = new PublishedPackageVersion()
                {
                    Id       = id,
                    Manifest = kvp.Value
                };

                if (vm.Attachments == null || !vm.Attachments.TryGetValue(PackageUtils.GetTarballName(id), out var attachment))
                {
                    patch.UpdatedVersions.Add(version);
                }
                else
                {
                    version.Tarball = new Tarball()
                    {
                        Package = id,
                        Data    = Convert.FromBase64String(attachment.Data)
                    };

                    patch.PublishedVersions.Add(version);
                }
            }

            return(patch);
        }