Skip to content

Commit 2c1284d

Browse files
committed
added download resource and metadata resource for v2
1 parent 066fc2e commit 2c1284d

File tree

5 files changed

+106
-2
lines changed

5 files changed

+106
-2
lines changed

src/NuGet.Client.V2/V2DownloadResource.cs

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using NuGet.Versioning;
33
using System;
44
using System.Collections.Generic;
5+
using System.IO;
56
using System.Linq;
67
using System.Text;
78
using System.Threading.Tasks;
@@ -13,9 +14,26 @@ public class V2DownloadResource : V2Resource,IDownload
1314
public V2DownloadResource(V2Resource resource)
1415
: base(resource) {}
1516

16-
Task<PackageDownloadMetadata> IDownload.GetNupkgUrlForDownload(PackageIdentity identity)
17+
public Task<PackageDownloadMetadata> GetNupkgUrlForDownload(PackageIdentity identity)
1718
{
18-
throw new NotImplementedException();
19+
//*TODOs: Temp implementation. Need to do erorr handling and stuff.
20+
return Task.Factory.StartNew(() =>
21+
{
22+
if(V2Client is DataServicePackageRepository)
23+
{
24+
return new PackageDownloadMetadata(new Uri(Path.Combine(V2Client.Source, "api/v2/" + identity.Id + "." + identity.Version + "*.nupkg"))); //Not sure if there is some other standard way to get the Url from a dataservice repo.
25+
}
26+
else if(V2Client is LocalPackageRepository)
27+
{
28+
LocalPackageRepository lrepo = V2Client as LocalPackageRepository;
29+
SemanticVersion semVer = new SemanticVersion(identity.Version.Version);
30+
return new PackageDownloadMetadata(new Uri(Path.Combine(V2Client.Source, lrepo.PathResolver.GetPackageFileName(identity.Id, semVer)));
31+
}
32+
else
33+
{
34+
throw new InvalidOperationException(string.Format("Unable to get download metadata for package {0}",identity.Id));
35+
}
36+
});
1937
}
2038
}
2139
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
using NuGet.Versioning;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
8+
namespace NuGet.Client.V2
9+
{
10+
public class V2MetadataResource : V2Resource, IMetadata
11+
{
12+
public V2MetadataResource(V2Resource resource)
13+
: base(resource) {}
14+
public Task<Versioning.NuGetVersion> GetLatestVersion(string packageId)
15+
{
16+
//*TODOs : No special processing for UNC or local share. Let the IPackageRepo handle it as it does today as of now.
17+
return Task.Factory.StartNew(() =>
18+
{
19+
SemanticVersion latestVersion = V2Client.FindPackagesById(packageId).OrderByDescending(p => p.Version).FirstOrDefault().Version;
20+
return new NuGetVersion(latestVersion.Version, latestVersion.SpecialVersion);
21+
});
22+
}
23+
24+
public Task<bool> IsSatellitePackage(string packageId)
25+
{
26+
throw new NotImplementedException();
27+
}
28+
}
29+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.ComponentModel.Composition;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
8+
namespace NuGet.Client.V2
9+
{
10+
[Export(typeof(ResourceProvider))]
11+
[ResourceProviderMetadata("V2MetadataResourceProvider", typeof(IMetadata))]
12+
public class V2MetadataResourceProvider : V2ResourceProvider
13+
{
14+
public override bool TryCreateResource(PackageSource source, out Resource resource)
15+
{
16+
V2MetadataResource v2MetadataResource;
17+
if (base.TryCreateResource(source, out resource))
18+
{
19+
v2MetadataResource = new V2MetadataResource((V2Resource)resource);
20+
resource = v2MetadataResource;
21+
return true;
22+
}
23+
else
24+
{
25+
return false;
26+
}
27+
}
28+
}
29+
}

src/VsExtension/VsExtension.csproj

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,10 @@
274274
<Reference Include="EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
275275
<EmbedInteropTypes>True</EmbedInteropTypes>
276276
</Reference>
277+
<Reference Include="JsonLD, Version=1.0.4.0, Culture=neutral, PublicKeyToken=2e465378e3b1a8dd, processorArchitecture=MSIL">
278+
<SpecificVersion>False</SpecificVersion>
279+
<HintPath>..\..\packages\json-ld.net.1.0.4\lib\net40-Client\JsonLD.dll</HintPath>
280+
</Reference>
277281
<Reference Include="Microsoft.VisualStudio.OLE.Interop, Version=7.1.40304.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
278282
<Reference Include="Microsoft.VisualStudio.Shell.Immutable.10.0, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
279283
<Reference Include="Microsoft.VisualStudio.Shell.Interop, Version=7.1.40304.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
@@ -300,10 +304,20 @@
300304
<SpecificVersion>False</SpecificVersion>
301305
<HintPath>..\..\packages\NuGet.Client.BaseTypes.0.1.2-master-1224\lib\net45\NuGet.Client.BaseTypes.dll</HintPath>
302306
</Reference>
307+
<Reference Include="NuGet.Client.V3">
308+
<HintPath>..\..\packages\NuGet.Client.V3.0.1.3-master-1224\lib\net45\NuGet.Client.V3.dll</HintPath>
309+
</Reference>
310+
<Reference Include="NuGet.Client.V3.VisualStudio">
311+
<HintPath>..\..\packages\NuGet.Client.V3.VisualStudio.0.1.3-master-1224\lib\net45\NuGet.Client.V3.VisualStudio.dll</HintPath>
312+
</Reference>
303313
<Reference Include="NuGet.Client.VisualStudio, Version=0.1.0.0, Culture=neutral, PublicKeyToken=a54e26fdc1b81123, processorArchitecture=MSIL">
304314
<SpecificVersion>False</SpecificVersion>
305315
<HintPath>..\..\packages\NuGet.Client.VisualStudio.0.1.2-master-1224\lib\net45\NuGet.Client.VisualStudio.dll</HintPath>
306316
</Reference>
317+
<Reference Include="NuGet.Data, Version=1.0.1.0, Culture=neutral, PublicKeyToken=2e465378e3b1a8dd, processorArchitecture=MSIL">
318+
<SpecificVersion>False</SpecificVersion>
319+
<HintPath>..\..\packages\NuGet.Data.1.0.1-master-43391912\lib\net45\NuGet.Data.dll</HintPath>
320+
</Reference>
307321
<Reference Include="NuGet.Versioning">
308322
<HintPath>..\..\packages\NuGet.Versioning.1.0.3\lib\portable-net40+win\NuGet.Versioning.dll</HintPath>
309323
</Reference>
@@ -313,6 +327,14 @@
313327
<Reference Include="System.Data" />
314328
<Reference Include="System.Design" />
315329
<Reference Include="System.Drawing" />
330+
<Reference Include="System.Net.Http" />
331+
<Reference Include="System.Net.Http.Extensions">
332+
<HintPath>..\..\packages\Microsoft.Net.Http.2.2.28\lib\net45\System.Net.Http.Extensions.dll</HintPath>
333+
</Reference>
334+
<Reference Include="System.Net.Http.Primitives">
335+
<HintPath>..\..\packages\Microsoft.Net.Http.2.2.28\lib\net45\System.Net.Http.Primitives.dll</HintPath>
336+
</Reference>
337+
<Reference Include="System.Net.Http.WebRequest" />
316338
<Reference Include="System.Windows.Forms" />
317339
<Reference Include="System.Xaml" />
318340
<Reference Include="System.Xml" />

src/VsExtension/packages.config

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3+
<package id="json-ld.net" version="1.0.4" targetFramework="net45" />
4+
<package id="Microsoft.Bcl" version="1.1.9" targetFramework="net45" />
35
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" />
6+
<package id="Microsoft.Net.Http" version="2.2.28" targetFramework="net45" />
47
<package id="Newtonsoft.Json" version="6.0.4" targetFramework="net45" />
58
<package id="NuGet.Client.BaseTypes" version="0.1.2-master-1224" targetFramework="net45" />
9+
<package id="NuGet.Client.V3" version="0.1.3-master-1224" targetFramework="net45" />
10+
<package id="NuGet.Client.V3.VisualStudio" version="0.1.3-master-1224" targetFramework="net45" />
611
<package id="NuGet.Client.VisualStudio" version="0.1.2-master-1224" targetFramework="net45" />
12+
<package id="NuGet.Data" version="1.0.1-master-43391912" targetFramework="net45" />
713
<package id="NuGet.Versioning" version="1.0.3" targetFramework="net45" />
814
</packages>

0 commit comments

Comments
 (0)