string DownloadPackage(Package package)
        {
            var cloudClient = CreateBlobClient();

            var packagesBlobContainer = Util.GetPackagesBlobContainer(cloudClient);

            var packageFileName = Util.GetPackageFileName(package.Id, package.Version);

            var downloadPath = Path.Combine(_tempFolder, packageFileName);

            var blob = packagesBlobContainer.GetBlockBlobReference(packageFileName);
            blob.DownloadToFile(downloadPath);

            return downloadPath;
        }
 void PopulateFrameworks(
     Package package,
     IEnumerable<string> targetFrameworks)
 {
     foreach (var targetFramework in targetFrameworks)
     {
         using (var sqlConnection = new SqlConnection(ConnectionString))
         using (var dbExecutor = new SqlExecutor(sqlConnection))
         {
             sqlConnection.Open();
             dbExecutor.Execute(
                 @"
             INSERT INTO PackageFrameworks
                 (Package_Key, TargetFramework)
             VALUES
                 (@packageKey, @targetFramework)",
                 new { packageKey = package.Key, targetFramework});
         }
     }
 }
 void AddPackageToCuratedFeed(Package package)
 {
     if (!WhatIf)
     {
         using (var sqlConnection = new SqlConnection(ConnectionString))
         using (var dbExecutor = new SqlExecutor(sqlConnection))
         {
             sqlConnection.Open();
             dbExecutor.Execute(@"
             INSERT INTO CuratedPackages
                 (CuratedFeedKey, PackageRegistrationKey, AutomaticallyCurated, Included)
             VALUES
                 ((SELECT [Key] FROM CuratedFeeds WHERE Name = 'webmatrix'), (SELECT [Key] FROM PackageRegistrations WHERE Id = @id), @automaticallyCurated, @included)",
                 new { id = package.Id, automaticallyCurated = true, included = true });
         }
     }
 }
        PackageFrameworkReport PopulateFrameworks(
            Package package,
            PackageFrameworkReport report)
        {
            using (var sqlConnection = new SqlConnection(ConnectionString.ConnectionString))
            using (var dbExecutor = new SqlExecutor(sqlConnection))
            {
                sqlConnection.Open();

                // Get all target frameworks in the db for this package
                report.DatabaseFrameworks = new HashSet<string>(dbExecutor.Query<string>(@"
                    SELECT TargetFramework
                    FROM PackageFrameworks
                    WHERE Package_Key = @packageKey",
                    new
                    {
                        packageKey = package.Key
                    })).ToArray();

                var adds = report.PackageFrameworks.Except(report.DatabaseFrameworks).Select(targetFramework =>
                    new PackageFrameworkOperation()
                    {
                        Type = PackageFrameworkOperationType.Add,
                        Framework = targetFramework,
                        Applied = false,
                        Error = "Not Started"
                    });
                var rems = report.DatabaseFrameworks.Except(report.PackageFrameworks).Select(targetFramework =>
                    new PackageFrameworkOperation()
                    {
                        Type = PackageFrameworkOperationType.Remove,
                        Framework = targetFramework,
                        Applied = false,
                        Error = "Not Started"
                    });

                report.Operations = Enumerable.Concat(adds, rems).ToArray();
            }

            return report;
        }