Find package versions ignoring character case

This commit is contained in:
2025-03-04 14:28:29 +00:00
parent bc1464db7f
commit 301a276a7b
7 changed files with 52 additions and 59 deletions

View File

@ -25,7 +25,7 @@ namespace isnd.Controllers
if (!pkgFileInfo.Exists)
{
return BadRequest("!pkgFileInfo.Exists");
return BadRequest("Package does´nt exist in the file system.");
}
return File(pkgFileInfo.OpenRead(), "application/zip; charset=binary");
}
@ -45,7 +45,7 @@ namespace isnd.Controllers
FileInfo pkgFileInfo = new FileInfo(pkgPath);
if (!pkgFileInfo.Exists)
{
return BadRequest("!pkgFileInfo.Exists");
return BadRequest("Package info does´nt exist in the file system.");
}
return File(pkgFileInfo.OpenRead(), "text/xml; charset=utf-8");

View File

@ -120,44 +120,53 @@ namespace isnd.Services
public string[] GetVersions(
string id,
NuGetVersion parsedVersion = null,
bool prerelease = false,
bool prerelease = true,
string packageType = null,
int skip = 0,
int take = 25)
{
IQueryable<PackageVersion> results =
(parsedVersion != null)?
(packageType == null) ?
dbContext.PackageVersions.Where(
v => v.PackageId == id
&& (prerelease || !v.IsPrerelease)
&& (parsedVersion.CompareTo(new SemanticVersion(v.Major, v.Minor, v.Patch)) < 0)
)
:
dbContext.PackageVersions.Where(
v => v.PackageId == id
&& (prerelease || !v.IsPrerelease)
&& (v.Type == packageType)
&& (parsedVersion.CompareTo(new SemanticVersion(v.Major, v.Minor, v.Patch)) < 0)
)
:
(packageType == null) ?
dbContext.PackageVersions.Where(
v => v.PackageId == id
&& (prerelease || !v.IsPrerelease)
)
:
dbContext.PackageVersions.Where(
v => v.PackageId == id
&& (prerelease || !v.IsPrerelease)
&& (v.Type == packageType)
)
;
if (!String.IsNullOrWhiteSpace(id))
{
id = id.ToLower();
if (!String.IsNullOrWhiteSpace(packageType))
{
packageType = packageType.ToLower();
}
IQueryable<PackageVersion> results =
(parsedVersion != null) ?
(packageType == null) ?
dbContext.PackageVersions.Where(
v => v.PackageId.ToLower() == id
&& (prerelease || !v.IsPrerelease)
&& (parsedVersion.CompareTo(new SemanticVersion(v.Major, v.Minor, v.Patch)) < 0)
)
:
dbContext.PackageVersions.Where(
v => v.PackageId.ToLower() == id
&& (prerelease || !v.IsPrerelease)
&& (v.Type == packageType)
&& (parsedVersion.CompareTo(new SemanticVersion(v.Major, v.Minor, v.Patch)) < 0)
)
return [.. results
.Select(v => v.FullString)
.Skip(skip).Take(take)];
:
(packageType == null) ?
dbContext.PackageVersions.Where(
v => v.PackageId.ToLower() == id
&& (prerelease || !v.IsPrerelease)
)
:
dbContext.PackageVersions.Where(
v => v.PackageId.ToLower() == id
&& (prerelease || !v.IsPrerelease)
&& (v.Type == packageType)
)
;
var res = results.Select(v => v.FullString)
.Skip(skip).Take(take).ToArray();
return res;
}
return null;
}
public string CatalogBaseUrl => apiBase;