WIP NuGet API 3.5.0

This commit is contained in:
Paul Schneider 2022-04-17 14:10:20 +01:00
commit a4a1c6e271
12 changed files with 172 additions and 98 deletions

View file

@ -57,59 +57,6 @@ namespace isnd.Controllers
{
return Ok(new ApiIndexViewModel{ Version = "3.0.0", Resources = _resources });
}
// GET /autocomplete?id=isn.protocol&prerelease=true
[HttpGet(_pkgRootPrefix + ApiConfig.AutoComplete)]
public IActionResult AutoComplete(
string id,
string semVerLevel,
bool prerelease = false,
string packageType = null,
int skip = 0,
int take = 25)
{
if (take > maxTake)
{
ModelState.AddModelError("take", "Maximum exceeded");
return BadRequest(ModelState);
}
if (semVerLevel != defaultSemVer)
{
ModelState.AddModelError("semVerLevel", defaultSemVer + " expected");
}
return Ok(_packageManager.AutoComplete(id,skip,take,prerelease,packageType));
}
// TODO GET {@id}/{LOWER_ID}/index.json
// LOWER_ID URL string yes The package ID, lowercased
// response : versions array of strings yes The versions available
[HttpGet(_pkgRootPrefix + ApiConfig.Get + "/{id}/{lower}/index.json")]
public IActionResult GetVersions(
string id,
string lower,
bool prerelease = false,
string packageType = null,
int skip = 0,
int take = 25)
{
if (take > maxTake)
{
ModelState.AddModelError("take", "Maximum exceeded");
}
// NugetVersion
if (!NuGetVersion.TryParse(lower, out NuGetVersion parsedVersion))
{
ModelState.AddModelError("lower", "invalid version string");
}
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
return Ok(new
{
versions = _packageManager.GetVersions(
id, parsedVersion, prerelease, packageType, skip, take)
});
}
}
}