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

@ -1,22 +0,0 @@
{
"dotnet": {
"enabled": true
},
"msbuild": {
"enabled": false
},
"Dnx": {
"enabled": false
},
"Script": {
"enabled": false
},
"fileOptions": {
"systemExcludeSearchPatterns": [
"**/bin/**/*",
"**/obj/**/*",
"**/node_modules/**/*"
],
"userExcludeSearchPatterns": []
}
}

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;

Binary file not shown.

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="localhost" value="https://localhost:5001/v3/index.json" protocolVersion="3" />
</packageSources>
</configuration>

View File

@ -30,7 +30,7 @@ namespace isn.tests
public void TestPush()
{
Program.LoadConfig();
var report = Program.PushPkg(new string[] { "./src/isn.abst/bin/Release/isn.abst.1.0.24.nupkg" });
var report = Program.PushPkg(new string[] { "test/data/packages/Yavsc.Abstract.1.0.8.nupkg" });
}
[Fact]

View File

@ -164,7 +164,7 @@ namespace isnd.host.tests
sourceCacheContext.RefreshMemoryCache = true;
CancellationTokenSource source = new CancellationTokenSource();
var meta = await metadataResource.GetMetadataAsync( "isn.abst", true, false, sourceCacheContext, logger, source.Token);
var meta = await metadataResource.GetMetadataAsync( "Yavsc.Abstract", true, false, sourceCacheContext, logger, source.Token);
foreach (IPackageSearchMetadata result in meta)
{