public DefaultPackageContentService( IPackageService packages, IPackageStorageService storage) { _packages = packages ?? throw new ArgumentNullException(nameof(packages)); _storage = storage ?? throw new ArgumentNullException(nameof(storage)); }
public DatabasePackageContentService( IMirrorService mirror, IPackageService packages, IPackageStorageService storage) { _mirror = mirror ?? throw new ArgumentNullException(nameof(mirror)); _packages = packages ?? throw new ArgumentNullException(nameof(packages)); _storage = storage ?? throw new ArgumentNullException(nameof(storage)); }
public IndexingService( IPackageService packages, IPackageStorageService storage, ILogger <IndexingService> logger) { _packages = packages ?? throw new ArgumentNullException(nameof(packages)); _storage = storage ?? throw new ArgumentNullException(nameof(storage)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); }
public static Task <bool> UploadPackageAsync( this NuGetClient client, string packageId, string version, string apiKey, IPackageStorageService storageService, CancellationToken cancellationToken = default) { return(client.UploadPackageAsync(packageId, NuGetVersion.Parse(version), apiKey, storageService, cancellationToken)); }
public PackageDeletionService( IPackageService packages, IPackageStorageService storage, IOptionsSnapshot <BaGetOptions> options, ILogger <PackageDeletionService> logger) { _packages = packages ?? throw new ArgumentNullException(nameof(packages)); _storage = storage ?? throw new ArgumentNullException(nameof(storage)); _options = options?.Value ?? throw new ArgumentNullException(nameof(options)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); }
public PackagePublishController( IIndexingService indexer, IPackageService packages, IPackageStorageService storage, ILogger <PackagePublishController> logger) { _indexer = indexer ?? throw new ArgumentNullException(nameof(indexer)); _packages = packages ?? throw new ArgumentNullException(nameof(packages)); _storage = storage ?? throw new ArgumentNullException(nameof(storage)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); }
public SyndicationService( FeedContext feedContext, IContext packageContext, IPackageStorageService packageStorageService, ISymbolStorageService symbolStorageService) { _feedContext = feedContext; _packageContext = packageContext; _packageStorageService = packageStorageService; _symbolStorageService = symbolStorageService; }
public PackageIndexingService( IPackageService packages, IPackageStorageService storage, ISearchService search, IOptionsSnapshot <BaGetOptions> options, ILogger <PackageIndexingService> logger) { _packages = packages ?? throw new ArgumentNullException(nameof(packages)); _storage = storage ?? throw new ArgumentNullException(nameof(storage)); _search = search ?? throw new ArgumentNullException(nameof(search)); _options = options ?? throw new ArgumentNullException(nameof(options)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); }
public PackageIndexingService( IPackageService packages, IPackageStorageService storage, ISearchIndexer search, SystemTime time, IOptionsSnapshot <PackageFeedOptions> options, ILogger <PackageIndexingService> logger) { _packages = packages ?? throw new ArgumentNullException(nameof(packages)); _storage = storage ?? throw new ArgumentNullException(nameof(storage)); _search = search ?? throw new ArgumentNullException(nameof(search)); _time = time ?? throw new ArgumentNullException(nameof(time)); _options = options ?? throw new ArgumentNullException(nameof(options)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); }
public static async Task <bool> UploadPackageAsync( this NuGetClient client, string packageId, NuGetVersion version, string apiKey, IPackageStorageService storageService, CancellationToken cancellationToken = default) { using var stream = await storageService.GetPackageStreamAsync(packageId, version, cancellationToken); if (stream == Stream.Null || cancellationToken.IsCancellationRequested) { return(false); } return(await client.UploadPackageAsync(packageId, version, apiKey, stream, cancellationToken)); }
public async Task <IActionResult> PushLatest(string groupName, [FromForm] PackageGroupAssociation groupAssociation, [FromServices] IPackageStorageService packageStorage, [FromServices] ISymbolStorageService symbolStorage) { if (groupName != groupAssociation.Group) { return(PackageGroups()); } var group = await _dbContext.PackageGroups .Include(x => x.Members) .Include(x => x.Syndications) .ThenInclude(x => x.PublishTarget) .FirstOrDefaultAsync(x => x.Name == groupName); if (group is null) { return(PackageGroups()); } var targets = group.Syndications.Select(x => x.PublishTarget); foreach (var package in group.Members) { var nugetPackage = await _context.Packages.Where(x => x.Id == package.PackageId && x.Listed == true) .OrderByDescending(x => x.Version) .FirstOrDefaultAsync(); if (nugetPackage is null) { continue; } foreach (var targetFeed in targets) { var client = new NuGetClient(targetFeed.PublishEndpoint.ToString()); await client.UploadPackageAsync(nugetPackage.Id, nugetPackage.Version, targetFeed.ApiToken, packageStorage); await client.UploadSymbolsPackageAsync(nugetPackage.Id, nugetPackage.Version, targetFeed.ApiToken, symbolStorage); } } // TODO: Add Success Page return(PackageGroups()); }
public PackageModule(IPackageService packageService, IPackageStorageService storage) : base("v3/package") { _packages = packageService ?? throw new ArgumentNullException(nameof(packageService)); _storage = storage ?? throw new ArgumentNullException(nameof(storage)); this.Get("/{id}/index.json", async(req, res, routeData) => { string id = routeData.As <string>("id"); var packages = await _packages.FindAsync(id); if (!packages.Any()) { res.StatusCode = 404; return; } await res.AsJson(new { Versions = packages.Select(p => p.VersionString).ToList() }); }); this.Get("/{id}/{version}/{idVersion}.nupkg", async(req, res, routeData) => { string id = routeData.As <string>("id"); string version = routeData.As <string>("version"); if (!NuGetVersion.TryParse(version, out var nugetVersion)) { res.StatusCode = 400; return; } var identity = new PackageIdentity(id, nugetVersion); if (!await _packages.IncrementDownloadCountAsync(identity)) { res.StatusCode = 404; return; } var packageStream = await _storage.GetPackageStreamAsync(identity); await res.FromStream(packageStream, "application/octet-stream"); }); this.Get("/{id}/{version}/{id2}.nuspec", async(req, res, routeData) => { string id = routeData.As <string>("id"); string version = routeData.As <string>("version"); if (!NuGetVersion.TryParse(version, out var nugetVersion)) { res.StatusCode = 400; return; } var identity = new PackageIdentity(id, nugetVersion); if (!await _packages.ExistsAsync(identity)) { res.StatusCode = 404; return; } await res.FromStream(await _storage.GetNuspecStreamAsync(identity), "text/xml"); }); this.Get("/{id}/{version}/readme", async(req, res, routeData) => { string id = routeData.As <string>("id"); string version = routeData.As <string>("version"); if (!NuGetVersion.TryParse(version, out var nugetVersion)) { res.StatusCode = 400; return; } var identity = new PackageIdentity(id, nugetVersion); if (!await _packages.ExistsAsync(identity)) { res.StatusCode = 404; return; } await res.FromStream(await _storage.GetReadmeStreamAsync(identity), "text/markdown"); }); }
public PackagesV2Module(IODataPackageSerializer serializer, IPackageService packageService, IPackageStorageService storage, IEdmModel odataModel, ILogger <PackagesV2Module> logger, LiGetCompatibilityOptions compat) { this._compat = compat; this._packageService = packageService; this._storage = storage; this._log = logger; this.GetCompat("/v2/contents/{id}/{version}", async(req, res, routeData) => { string id = routeData.As <string>("id"); string version = routeData.As <string>("version"); if (!NuGetVersion.TryParse(version, out var nugetVersion)) { res.StatusCode = 400; return; } if (!await packageService.IncrementDownloadCountAsync(id, nugetVersion)) { res.StatusCode = 404; return; } var identity = new PackageIdentity(id, nugetVersion); var packageStream = await _storage.GetPackageStreamAsync(identity); await res.FromStream(packageStream, "application/zip"); }); Func <HttpRequest, HttpResponse, RouteData, Task> indexHandler = async(req, res, routeData) => { var serviceUrl = GetServiceUrl(req); string text = $@"<?xml version=""1.0"" encoding=""utf-8""?> <service xml:base=""{serviceUrl}"" xmlns=""http://www.w3.org/2007/app"" xmlns:atom=""http://www.w3.org/2005/Atom""><workspace> <atom:title type=""text"">Default</atom:title><collection href=""Packages""><atom:title type=""text"">Packages</atom:title></collection></workspace> </service>"; res.StatusCode = 200; res.ContentType = "application/xml; charset=utf-8"; await res.WriteAsync(text, new UTF8Encoding(false)); }; this.GetCompat("/v2/", indexHandler); this.GetCompat(@"/v2/FindPackagesById{query}", async(req, res, routeData) => { try { var serviceUrl = GetServiceUrl(req); var uriParser = new ODataUriParser(odataModel, new Uri(serviceUrl), req.GetUri()); var path = uriParser.ParsePath(); if (path.FirstSegment.Identifier == "FindPackagesById") { var idOrNull = uriParser.CustomQueryOptions.FirstOrDefault(o => o.Key.ToLowerInvariant() == "id").Value; string id = idOrNull.TrimStart('\'').TrimEnd('\''); _log.LogDebug("Request to FindPackagesById id={0}", id); var found = await _packageService.FindAsync(id, false, true); var odata = new ODataResponse <IEnumerable <PackageWithUrls> >(serviceUrl, found.Select(f => ToPackageWithUrls(req, f))); using (var ms = new MemoryStream()) { serializer.Serialize(ms, odata.Entity, odata.ServiceBaseUrl); ms.Seek(0, SeekOrigin.Begin); await res.FromStream(ms, atomXmlContentType); } } else { res.StatusCode = 400; } } catch (ODataException odataPathError) { _log.LogError("Bad odata query", odataPathError); res.StatusCode = 400; } }); this.GetCompat(@"/v2/Packages{query}", async(req, res, routeData) => { try { var serviceUrl = GetServiceUrl(req); var uriParser = new ODataUriParser(odataModel, new Uri(serviceUrl), req.GetUri()); var path = uriParser.ParsePath(); if (path.FirstSegment.Identifier == "Packages") { if (path.Count == 2 && path.LastSegment is KeySegment) { KeySegment queryParams = (KeySegment)path.LastSegment; string id = queryParams.Keys.First(k => k.Key == "Id").Value as string; string version = queryParams.Keys.First(k => k.Key == "Version").Value as string; _log.LogDebug("Request to find package by id={0} and version={1}", id, version); var found = await _packageService.FindAsync(id, NuGetVersion.Parse(version), false, true); if (found == null) { res.StatusCode = 404; return; } var odataPackage = new ODataResponse <PackageWithUrls>(serviceUrl, ToPackageWithUrls(req, found)); using (var ms = new MemoryStream()) { serializer.Serialize(ms, odataPackage.Entity.Pkg, odataPackage.ServiceBaseUrl, odataPackage.Entity.ResourceIdUrl, odataPackage.Entity.PackageContentUrl); ms.Seek(0, SeekOrigin.Begin); await res.FromStream(ms, atomXmlContentType); } } else { res.StatusCode = 400; } } else { res.StatusCode = 400; } } catch (ODataException odataPathError) { _log.LogError("Bad odata query", odataPathError); res.StatusCode = 400; } }); }
public PackageManager(IPackageStorageService packageStorageService, IMapper mapper) { _packageStorageService = packageStorageService; _mapper = mapper; }