get the package ignoring character case

This commit is contained in:
2025-03-04 15:50:44 +00:00
parent 5f7a346d8a
commit ee5a3cd775
2 changed files with 21 additions and 6 deletions

View File

@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Mvc;
using isnd.Attributes;
using isnd.Entities;
using isn.abst;
using System.Linq;
namespace isnd.Controllers
{
@ -15,17 +16,26 @@ namespace isnd.Controllers
public IActionResult GetPackage(
[FromRoute][SafeName][Required] string id,
[FromRoute][SafeName][Required] string version,
[FromRoute] string idf, [FromRoute] string versionFromName)
[FromRoute] string idf,
[FromRoute] string versionFromName)
{
var pkgPath = Path.Combine(isndSettings.PackagesRootDir,
id, version, $"{id}-{version}." + Constants.PacketFileExtension
);
DirectoryInfo pkgsDirInfo = new DirectoryInfo(isndSettings.PackagesRootDir);
FileInfo pkgFileInfo = new FileInfo(pkgPath);
var pkgDirInfo = pkgsDirInfo.GetDirectories().FirstOrDefault(
s=>string.Compare(s.Name,id, System.StringComparison.InvariantCultureIgnoreCase)==0);
if (pkgDirInfo==null)
return BadRequest("Package does´nt exist in the file system.");
var pkgVersionDirInfo = pkgDirInfo.GetDirectories().FirstOrDefault(
s=>s.Name==version);
var pkgNameSpec=$"{id}-{version}.{Constants.PacketFileExtension}";
FileInfo pkgFileInfo = pkgVersionDirInfo.GetFiles()
.FirstOrDefault(p=>string.Compare(p.Name,pkgNameSpec,
System.StringComparison.InvariantCultureIgnoreCase)==0);
if (!pkgFileInfo.Exists)
{
return BadRequest("Package does´nt exist in the file system.");
return BadRequest("Package version does´nt exist in the file system.");
}
return File(pkgFileInfo.OpenRead(), "application/zip; charset=binary");
}

View File

@ -49,6 +49,11 @@ namespace isnd.Data.Packages
public virtual Commit LatestCommit { get; set; }
internal static bool ValidateId(string pkgId)
{
return !string.IsNullOrWhiteSpace(pkgId);
}
public PackageVersion GetLatestVersion()
{
var latest = Versions.Max(v => v.NugetVersion);