75 lines
2.5 KiB
C#
75 lines
2.5 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
using OI.Metrology.Shared.Models;
|
|
using OI.Metrology.Shared.Models.Stateless;
|
|
using System.Collections.Specialized;
|
|
using System.Text.Json;
|
|
using System.Web;
|
|
|
|
namespace OI.Metrology.Wafer.Counter.ApiControllers;
|
|
|
|
[Route("api/v1/file-share")]
|
|
public class FileShareController : Controller, IFileShareController<IResult>
|
|
{
|
|
|
|
private readonly IFileShareRepository _FileShareRepository;
|
|
|
|
public FileShareController(IFileShareRepository fileShareRepository) =>
|
|
_FileShareRepository = fileShareRepository;
|
|
|
|
[HttpGet("copy-file")]
|
|
public IResult CopyFile(string from, string to)
|
|
{
|
|
_FileShareRepository.CopyFile(from, to);
|
|
return Results.Ok();
|
|
}
|
|
|
|
[HttpGet("move-file")]
|
|
public IResult MoveFile(string from, string to)
|
|
{
|
|
_FileShareRepository.MoveFile(from, to);
|
|
return Results.Ok();
|
|
}
|
|
|
|
[HttpGet("file-write")]
|
|
public IResult FileWrite(string path, string contents)
|
|
{
|
|
_FileShareRepository.FileWrite(path, contents);
|
|
return Results.Ok();
|
|
}
|
|
|
|
private static Dictionary<string, string?> GetKeyValuePairs(QueryString queryString)
|
|
{
|
|
Dictionary<string, string?> results = [];
|
|
if (queryString.HasValue)
|
|
{
|
|
NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(queryString.Value);
|
|
foreach (string? key in nameValueCollection.AllKeys)
|
|
{
|
|
if (key is null)
|
|
continue;
|
|
results.Add(key, nameValueCollection[key]);
|
|
}
|
|
}
|
|
return results;
|
|
}
|
|
|
|
private static CharacterizationParameters? GetCharacterizationParameters(QueryString queryString)
|
|
{
|
|
CharacterizationParameters? result;
|
|
Dictionary<string, string?> keyValuePairs = GetKeyValuePairs(queryString);
|
|
string json = JsonSerializer.Serialize(keyValuePairs);
|
|
result = string.IsNullOrEmpty(json) ? null : JsonSerializer.Deserialize(json, CharacterizationParametersSourceGenerationContext.Default.CharacterizationParameters);
|
|
return result;
|
|
}
|
|
|
|
[HttpGet("archive-data")]
|
|
public IActionResult ArchiveData()
|
|
{
|
|
List<CharacterizationInfo> results;
|
|
CharacterizationParameters? characterizationParameters = GetCharacterizationParameters(Request.QueryString);
|
|
ArgumentNullException.ThrowIfNull(characterizationParameters);
|
|
results = _FileShareRepository.GetArchiveData(characterizationParameters);
|
|
return Json(results);
|
|
}
|
|
|
|
} |