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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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 Tuple<string, IVersionSpec, FrameworkName> ParseDependency(string

// 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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,9 @@ public static IPackage CreatePackage(string id,
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.