Skip to content

Commit

Permalink
Download Cache information
Browse files Browse the repository at this point in the history
If the server supports providing download cache information, provide it
to the client.
  • Loading branch information
ferventcoder committed Jan 20, 2016
1 parent 3866411 commit 133552a
Show file tree
Hide file tree
Showing 7 changed files with 82 additions and 10 deletions.
1 change: 1 addition & 0 deletions src/Core/Core.csproj
Expand Up @@ -112,6 +112,7 @@
<Compile Include="NETPortable\NetPortableProfileCollection.cs" />
<Compile Include="NETPortable\NetPortableProfileTable.cs" />
<Compile Include="PackageRestoreConsent.cs" />
<Compile Include="Packages\DownloadCache.cs" />
<Compile Include="Packages\IChocolateyPackageMetadata.cs" />
<Compile Include="Packages\IChocolateyServerPackageMetadata.cs" />
<Compile Include="Packages\LocalPackage.cs" />
Expand Down
45 changes: 35 additions & 10 deletions src/Core/Packages/DataServicePackage.cs
Expand Up @@ -226,11 +226,9 @@ public string Dependencies
set;
}

public string PackageHash
{
get;
set;
}
public string PackageHash { get; set; }
public string PackageHashAlgorithm { get; set; }

public long PackageSize { get; set; }
public int VersionDownloadCount { get; set; }
public bool IsApproved { get; set; }
Expand All @@ -244,11 +242,38 @@ public string PackageHash
public DateTime? PackageReviewedDate { get; set; }
public DateTime? PackageApprovedDate { get; set; }
public string PackageReviewer { get; set; }
public bool IsDownloadCacheAvailable { get; set; }
public DateTime? DownloadCacheDate { get; set; }
public string DownloadCache { get; set; }

public string PackageHashAlgorithm
IEnumerable<DownloadCache> IServerPackageMetadata.DownloadCache
{
get;
set;
get
{
if (String.IsNullOrEmpty(DownloadCache))
{
return Enumerable.Empty<DownloadCache>();
}

var cache = new List<DownloadCache>();
foreach (var downloadString in DownloadCache.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries).ToList())
{
if (downloadString.Contains("^"))
{
var cacheValues = downloadString.Split(new[] { '^' }, StringSplitOptions.RemoveEmptyEntries);
if (cacheValues.Count() < 3) continue;

cache.Add(new DownloadCache
{
OriginalUrl = cacheValues[0],
FileName = cacheValues[1],
Checksum = cacheValues[2]
});
}
}

return cache;
}
}

public bool IsLatestVersion
Expand Down Expand Up @@ -347,7 +372,7 @@ public IEnumerable<PackageDependencySet> DependencySets

public ICollection<PackageReferenceSet> PackageAssemblyReferences
{
get
get
{
return Package.PackageAssemblyReferences;
}
Expand Down Expand Up @@ -537,7 +562,7 @@ private static List<PackageDependencySet> ParseDependencySet(string value)

// Trim the id
string id = tokens[0].Trim();

IVersionSpec versionSpec = null;
if (tokens.Length > 1)
{
Expand Down
9 changes: 9 additions & 0 deletions src/Core/Packages/DownloadCache.cs
@@ -0,0 +1,9 @@
namespace NuGet
{
public class DownloadCache
{
public string OriginalUrl { get; set; }
public string FileName { get; set; }
public string Checksum { get; set; }
}
}
4 changes: 4 additions & 0 deletions src/Core/Packages/IChocolateyServerPackageMetadata.cs
Expand Up @@ -28,5 +28,9 @@ public partial interface IServerPackageMetadata
DateTime? PackageReviewedDate { get; }
DateTime? PackageApprovedDate { get; }
string PackageReviewer { get; }

bool IsDownloadCacheAvailable { get; }
DateTime? DownloadCacheDate { get; }
IEnumerable<DownloadCache> DownloadCache { get; }
}
}
24 changes: 24 additions & 0 deletions src/Core/Packages/LocalPackage.cs
Expand Up @@ -325,6 +325,30 @@ public string PackageReviewer
}
}

public bool IsDownloadCacheAvailable
{
get
{
return false;
}
}

public DateTime? DownloadCacheDate
{
get
{
return null;
}
}

public IEnumerable<DownloadCache> DownloadCache
{
get
{
return Enumerable.Empty<DownloadCache>();
}
}

#endregion

public virtual IEnumerable<FrameworkName> GetSupportedFrameworks()
Expand Down
6 changes: 6 additions & 0 deletions src/Server/DataServices/Package.cs
Expand Up @@ -99,6 +99,9 @@ public Package(IPackage package, DerivedPackageData derivedData)
PackageReviewedDate = package.PackageReviewedDate;
PackageApprovedDate = package.PackageApprovedDate;
PackageReviewer = package.PackageReviewer;
IsDownloadCacheAvailable = package.IsDownloadCacheAvailable;
DownloadCacheDate = package.DownloadCacheDate;
DownloadCache = package.DownloadCache;
}

internal string FullPath
Expand Down Expand Up @@ -306,6 +309,9 @@ public string MinClientVersion
public DateTime? PackageReviewedDate { get; set; }
public DateTime? PackageApprovedDate { get; set; }
public string PackageReviewer { get; set; }
public bool IsDownloadCacheAvailable { get; set; }
public DateTime? DownloadCacheDate { get; set; }
public IEnumerable<DownloadCache> DownloadCache { get; set; }

#endregion

Expand Down
3 changes: 3 additions & 0 deletions test/Test.Utility/PackageUtility.cs
Expand Up @@ -248,6 +248,9 @@ public static IPackage CreateProjectLevelPackage(string id, string version = "1.
mockPackage.Setup(m => m.PackageReviewedDate).Returns((DateTime?)null);
mockPackage.Setup(m => m.PackageApprovedDate).Returns((DateTime?)null);
mockPackage.Setup(m => m.PackageReviewer).Returns(string.Empty);
mockPackage.Setup(m => m.IsDownloadCacheAvailable).Returns(false);
mockPackage.Setup(m => m.DownloadCacheDate).Returns((DateTime?)null);
mockPackage.Setup(m => m.DownloadCache).Returns(Enumerable.Empty<DownloadCache>);

return mockPackage.Object;
}
Expand Down

0 comments on commit 133552a

Please sign in to comment.