get the package ignoring character case
This commit is contained in:
@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Mvc;
|
|||||||
using isnd.Attributes;
|
using isnd.Attributes;
|
||||||
using isnd.Entities;
|
using isnd.Entities;
|
||||||
using isn.abst;
|
using isn.abst;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace isnd.Controllers
|
namespace isnd.Controllers
|
||||||
{
|
{
|
||||||
@ -15,17 +16,26 @@ namespace isnd.Controllers
|
|||||||
public IActionResult GetPackage(
|
public IActionResult GetPackage(
|
||||||
[FromRoute][SafeName][Required] string id,
|
[FromRoute][SafeName][Required] string id,
|
||||||
[FromRoute][SafeName][Required] string version,
|
[FromRoute][SafeName][Required] string version,
|
||||||
[FromRoute] string idf, [FromRoute] string versionFromName)
|
[FromRoute] string idf,
|
||||||
|
[FromRoute] string versionFromName)
|
||||||
{
|
{
|
||||||
var pkgPath = Path.Combine(isndSettings.PackagesRootDir,
|
DirectoryInfo pkgsDirInfo = new DirectoryInfo(isndSettings.PackagesRootDir);
|
||||||
id, version, $"{id}-{version}." + Constants.PacketFileExtension
|
|
||||||
);
|
|
||||||
|
|
||||||
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)
|
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");
|
return File(pkgFileInfo.OpenRead(), "application/zip; charset=binary");
|
||||||
}
|
}
|
||||||
|
@ -49,6 +49,11 @@ namespace isnd.Data.Packages
|
|||||||
|
|
||||||
public virtual Commit LatestCommit { get; set; }
|
public virtual Commit LatestCommit { get; set; }
|
||||||
|
|
||||||
|
internal static bool ValidateId(string pkgId)
|
||||||
|
{
|
||||||
|
return !string.IsNullOrWhiteSpace(pkgId);
|
||||||
|
}
|
||||||
|
|
||||||
public PackageVersion GetLatestVersion()
|
public PackageVersion GetLatestVersion()
|
||||||
{
|
{
|
||||||
var latest = Versions.Max(v => v.NugetVersion);
|
var latest = Versions.Max(v => v.NugetVersion);
|
||||||
|
Reference in New Issue
Block a user