// See: https://docs.microsoft.com/en-us/nuget/api/package-publish-resource#push-a-package public async Task Upload(CancellationToken cancellationToken) { if (_options.Value.IsReadOnlyMode || !await _authentication.AuthenticateAsync(Request.GetApiKey())) { HttpContext.Response.StatusCode = 401; return; } try { using (var uploadStream = await Request.GetUploadStreamOrNullAsync(cancellationToken)) { if (uploadStream == null) { HttpContext.Response.StatusCode = 400; return; } var result = await _indexer.IndexAsync(uploadStream, cancellationToken); switch (result) { case SymbolIndexingResult.InvalidSymbolPackage: HttpContext.Response.StatusCode = 400; break; case SymbolIndexingResult.PackageNotFound: HttpContext.Response.StatusCode = 404; break; case SymbolIndexingResult.Success: HttpContext.Response.StatusCode = 201; break; } } } catch (Exception e) { _logger.LogError(e, "Exception thrown during symbol upload"); HttpContext.Response.StatusCode = 500; } }
public async Task Upload([FromServices] IPackageContext packageContext, CancellationToken cancellationToken) { try { using var uploadStream = await Request.GetUploadStreamOrNullAsync(cancellationToken); if (uploadStream == null) { HttpContext.Response.StatusCode = 400; return; } var result = await _indexer.IndexAsync(uploadStream, cancellationToken); switch (result.Status) { case SymbolIndexingStatus.InvalidSymbolPackage: HttpContext.Response.StatusCode = 400; break; case SymbolIndexingStatus.PackageNotFound: HttpContext.Response.StatusCode = 404; break; case SymbolIndexingStatus.Success: HttpContext.Response.StatusCode = 201; packageContext.PackageId = result.PackageId; packageContext.PackageVersion = result.PackageVersion; break; } } catch (Exception e) { _logger.LogError(e, "Exception thrown during symbol upload"); HttpContext.Response.StatusCode = 500; } }