-
Notifications
You must be signed in to change notification settings - Fork 748
Expand file tree
/
Copy pathRepository.cs
More file actions
167 lines (149 loc) · 9.23 KB
/
Repository.cs
File metadata and controls
167 lines (149 loc) · 9.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.Linq;
using NuGet.Configuration;
using NuGet.Protocol.LocalRepositories;
using NuGet.Protocol.Providers;
namespace NuGet.Protocol.Core.Types
{
public static class Repository
{
private static ProviderFactory _providerFactory = new ProviderFactory();
public static RepositoryFactory Factory { get; } = new RepositoryFactory();
public static ProviderFactory Provider
{
get
{
return _providerFactory;
}
set
{
if (value == null)
{
throw new ArgumentNullException(nameof(value));
}
_providerFactory = value;
}
}
public class RepositoryFactory
{
// Methods are added by extension
}
public class ProviderFactory
{
public virtual IEnumerable<Lazy<INuGetResourceProvider>> GetCoreV3()
{
yield return new Lazy<INuGetResourceProvider>(() => new FeedTypeResourceProvider());
yield return new Lazy<INuGetResourceProvider>(() => new DependencyInfoResourceV3Provider());
yield return new Lazy<INuGetResourceProvider>(() => new DownloadResourcePluginProvider());
yield return new Lazy<INuGetResourceProvider>(() => new DownloadResourceV3Provider());
yield return new Lazy<INuGetResourceProvider>(() => new MetadataResourceV3Provider());
#pragma warning disable CS0618 // Type or member is obsolete
yield return new Lazy<INuGetResourceProvider>(() => new RawSearchResourceV3Provider());
#pragma warning restore CS0618 // Type or member is obsolete
yield return new Lazy<INuGetResourceProvider>(() => new RegistrationResourceV3Provider());
yield return new Lazy<INuGetResourceProvider>(() => new SymbolPackageUpdateResourceV3Provider());
yield return new Lazy<INuGetResourceProvider>(() => new ReportAbuseResourceV3Provider());
yield return new Lazy<INuGetResourceProvider>(() => new PackageDetailsUriResourceV3Provider());
yield return new Lazy<INuGetResourceProvider>(() => new ServiceIndexResourceV3Provider());
yield return new Lazy<INuGetResourceProvider>(() => new ODataServiceDocumentResourceV2Provider());
yield return new Lazy<INuGetResourceProvider>(() => new HttpHandlerResourceV3Provider());
yield return new Lazy<INuGetResourceProvider>(() => new HttpSourceResourceProvider());
yield return new Lazy<INuGetResourceProvider>(() => new PluginFindPackageByIdResourceProvider());
yield return new Lazy<INuGetResourceProvider>(() => new HttpFileSystemBasedFindPackageByIdResourceProvider());
yield return new Lazy<INuGetResourceProvider>(() => new RemoteV3FindPackageByIdResourceProvider());
yield return new Lazy<INuGetResourceProvider>(() => new RemoteV2FindPackageByIdResourceProvider());
yield return new Lazy<INuGetResourceProvider>(() => new LocalV3FindPackageByIdResourceProvider());
yield return new Lazy<INuGetResourceProvider>(() => new LocalV2FindPackageByIdResourceProvider());
yield return new Lazy<INuGetResourceProvider>(() => new PackageUpdateResourceV2Provider());
yield return new Lazy<INuGetResourceProvider>(() => new PackageUpdateResourceV3Provider());
yield return new Lazy<INuGetResourceProvider>(() => new DependencyInfoResourceV2FeedProvider());
yield return new Lazy<INuGetResourceProvider>(() => new DownloadResourceV2FeedProvider());
yield return new Lazy<INuGetResourceProvider>(() => new MetadataResourceV2FeedProvider());
yield return new Lazy<INuGetResourceProvider>(() => new V3FeedListResourceProvider());
yield return new Lazy<INuGetResourceProvider>(() => new V2FeedListResourceProvider());
yield return new Lazy<INuGetResourceProvider>(() => new LocalPackageListResourceProvider());
yield return new Lazy<INuGetResourceProvider>(() => new PackageSearchResourceV2FeedProvider());
yield return new Lazy<INuGetResourceProvider>(() => new PackageSearchResourceV3Provider());
yield return new Lazy<INuGetResourceProvider>(() => new PackageMetadataResourceV2FeedProvider());
yield return new Lazy<INuGetResourceProvider>(() => new PackageMetadataResourceV3Provider());
yield return new Lazy<INuGetResourceProvider>(() => new AutoCompleteResourceV2FeedProvider());
yield return new Lazy<INuGetResourceProvider>(() => new AutoCompleteResourceV3Provider());
yield return new Lazy<INuGetResourceProvider>(() => new PluginResourceProvider());
yield return new Lazy<INuGetResourceProvider>(() => new RepositorySignatureResourceProvider());
yield return new Lazy<INuGetResourceProvider>(() => new VulnerabilityInfoResourceV3Provider());
yield return new Lazy<INuGetResourceProvider>(() => new OwnerDetailsUriResourceV3Provider());
// Local repository providers
yield return new Lazy<INuGetResourceProvider>(() => new FindLocalPackagesResourceUnzippedProvider());
yield return new Lazy<INuGetResourceProvider>(() => new FindLocalPackagesResourceV2Provider());
yield return new Lazy<INuGetResourceProvider>(() => new FindLocalPackagesResourceV3Provider());
yield return new Lazy<INuGetResourceProvider>(() => new FindLocalPackagesResourcePackagesConfigProvider());
yield return new Lazy<INuGetResourceProvider>(() => new LocalAutoCompleteResourceProvider());
yield return new Lazy<INuGetResourceProvider>(() => new LocalDependencyInfoResourceProvider());
yield return new Lazy<INuGetResourceProvider>(() => new LocalDownloadResourceProvider());
yield return new Lazy<INuGetResourceProvider>(() => new LocalMetadataResourceProvider());
yield return new Lazy<INuGetResourceProvider>(() => new LocalPackageMetadataResourceProvider());
yield return new Lazy<INuGetResourceProvider>(() => new LocalPackageSearchResourceProvider());
}
}
/// <summary>
/// Create the default source repository provider
/// </summary>
[Obsolete("https://github.com/NuGet/Home/issues/8479")]
public static ISourceRepositoryProvider CreateProvider(IEnumerable<INuGetResourceProvider> resourceProviders)
{
return new SourceRepositoryProvider(Settings.LoadDefaultSettings(null, null, null), CreateLazy(resourceProviders));
}
/// <summary>
/// Find sources from nuget.config based on the root path
/// </summary>
/// <param name="rootPath">lowest folder path</param>
[Obsolete("https://github.com/NuGet/Home/issues/8479")]
public static ISourceRepositoryProvider CreateProvider(IEnumerable<INuGetResourceProvider> resourceProviders, string rootPath)
{
return new SourceRepositoryProvider(Settings.LoadDefaultSettings(rootPath, null, null), CreateLazy(resourceProviders));
}
/// <summary>
/// Create a SourceRepository
/// </summary>
public static SourceRepository CreateSource(IEnumerable<Lazy<INuGetResourceProvider>> resourceProviders, string sourceUrl)
{
return CreateSource(resourceProviders, new PackageSource(sourceUrl));
}
/// <summary>
/// Create a SourceRepository
/// </summary>
public static SourceRepository CreateSource(IEnumerable<Lazy<INuGetResourceProvider>> resourceProviders, string sourceUrl, FeedType type)
{
return CreateSource(resourceProviders, new PackageSource(sourceUrl), type);
}
/// <summary>
/// Create a SourceRepository
/// </summary>
public static SourceRepository CreateSource(IEnumerable<Lazy<INuGetResourceProvider>> resourceProviders, PackageSource source)
{
return CreateSource(resourceProviders, source, FeedType.Undefined);
}
/// <summary>
/// Create a SourceRepository
/// </summary>
public static SourceRepository CreateSource(IEnumerable<Lazy<INuGetResourceProvider>> resourceProviders, PackageSource source, FeedType type)
{
if (source == null)
{
throw new ArgumentNullException(nameof(source));
}
if (resourceProviders == null)
{
throw new ArgumentNullException(nameof(resourceProviders));
}
return new SourceRepository(source, resourceProviders, type);
}
private static IEnumerable<Lazy<INuGetResourceProvider>> CreateLazy(IEnumerable<INuGetResourceProvider> providers)
{
return providers.Select(e => new Lazy<INuGetResourceProvider>(() => e));
}
}
}