diff --git a/src/isnd/Controllers/Packages/PackagesController.GetPackage.cs b/src/isnd/Controllers/Packages/PackagesController.GetPackage.cs index 6c18f77..2bfda7e 100644 --- a/src/isnd/Controllers/Packages/PackagesController.GetPackage.cs +++ b/src/isnd/Controllers/Packages/PackagesController.GetPackage.cs @@ -5,6 +5,7 @@ using isnd.Attributes; using isnd.Entities; using isn.abst; using System.Linq; +using Microsoft.Extensions.Logging; namespace isnd.Controllers { @@ -27,17 +28,18 @@ namespace isnd.Controllers return BadRequest("Package does´nt exist in the file system."); var pkgVersionDirInfo = pkgDirInfo.GetDirectories().FirstOrDefault( s=>s.Name==version); + if (pkgVersionDirInfo==null) + return BadRequest("Package does´nt exist in the specified version."); + var pkgNameSpec=$"{id}-{version}.{Constants.PacketFileExtension}"; - if (pkgVersionDirInfo == null) - return NotFound(); - FileInfo pkgFileInfo = pkgVersionDirInfo.GetFiles() .FirstOrDefault(p=>string.Compare(p.Name,pkgNameSpec, System.StringComparison.InvariantCultureIgnoreCase)==0); - if (!pkgFileInfo.Exists) + if (pkgFileInfo==null || !pkgFileInfo.Exists) { + logger.LogError($"Not found in {pkgVersionDirInfo.FullName} : {pkgNameSpec}"); return BadRequest("Package version does´nt exist in the file system."); } return File(pkgFileInfo.OpenRead(), "application/zip; charset=binary"); diff --git a/src/isnd/Controllers/Packages/PackagesController.Put.cs b/src/isnd/Controllers/Packages/PackagesController.Put.cs index c13bd38..ea6fb3d 100644 --- a/src/isnd/Controllers/Packages/PackagesController.Put.cs +++ b/src/isnd/Controllers/Packages/PackagesController.Put.cs @@ -34,23 +34,28 @@ namespace isnd.Controllers logger.LogError("403 : no api-key"); return Unauthorized(); } + bool foundPackage = false; + foreach (IFormFile file in Request.Form.Files) { - FileInfo inputFileInfo = new FileInfo(file.Name); + FileInfo inputFileInfo = new FileInfo(file.FileName); switch (inputFileInfo.Extension) { - case "nupkg": - case "nupkgs": + case ".nupkg": + case ".nupkgs": var libVersion = await packageManager.PutPackageAsync(inputFileInfo.Extension, file.OpenReadStream(), dbApiKey.UserId); logger.LogInformation($"new package : {libVersion.PackageId} {libVersion.NugetLink}"); + foundPackage = true; break; default: - logger.LogInformation($"file extension is not supported : {inputFileInfo.Extension}"); + logger.LogInformation($"file extension is not supported : {inputFileInfo.Extension}"); break; } - + } - return Ok(); + if (foundPackage) + return Ok(); + return BadRequest("no package"); } catch (Exception ex) { diff --git a/src/isnd/Services/PackageManager.cs b/src/isnd/Services/PackageManager.cs index 8953266..295e19f 100644 --- a/src/isnd/Services/PackageManager.cs +++ b/src/isnd/Services/PackageManager.cs @@ -441,7 +441,7 @@ namespace isnd.Services string packageIdPath = Path.Combine(isndSettings.PackagesRootDir, pkgId); pkgPath = Path.Combine(packageIdPath, nugetVersion.ToFullString()); - string name = $"{pkgId}-{nugetVersion}." + fileExtension; + string name = $"{pkgId}-{nugetVersion}" + fileExtension; fullPath = Path.Combine(pkgPath, name); var authors = xMetaElements.FirstOrDefault(x => x.Name.LocalName == "authors")?.Value; diff --git a/test/data/packages/AsciiDocNet.1.0.0.nupkg b/test/data/packages/AsciiDocNet.1.0.0.nupkg new file mode 100644 index 0000000..9e5eacb Binary files /dev/null and b/test/data/packages/AsciiDocNet.1.0.0.nupkg differ diff --git a/test/data/test-isn/NuGet.Config b/test/data/test-isn/NuGet.Config index 966fc61..3d80239 100644 --- a/test/data/test-isn/NuGet.Config +++ b/test/data/test-isn/NuGet.Config @@ -3,4 +3,7 @@ + + + diff --git a/test/isnd.tests/UnitTestWebHost.cs b/test/isnd.tests/UnitTestWebHost.cs index dfe83ee..3ebaac7 100644 --- a/test/isnd.tests/UnitTestWebHost.cs +++ b/test/isnd.tests/UnitTestWebHost.cs @@ -183,7 +183,7 @@ namespace isnd.host.tests PackageUpdateResource pushRes = await repository.GetResourceAsync(); SymbolPackageUpdateResourceV3 symbolPackageResource = await repository.GetResourceAsync(); - await pushRes.Push(new List{ "../../../Yavsc.Abstract.1.0.8.nupkg" }, null, + await pushRes.Push(new List{ "/home/paul/workspace/isn/test/data/packages/AsciiDocNet.1.0.0.nupkg" }, null, 5000, false, GetApiKey, GetSymbolsApiKey, false, false, symbolPackageResource, logger); }