ASCU_ALL/ApiServer/Controllers/DataController.cs
2021-08-02 23:01:18 +05:00

87 lines
2.5 KiB
C#

using Microsoft.AspNetCore.Mvc;
using NLog;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using ApiServer.ApiStruct;
using Newtonsoft.Json;
using System.IO;
namespace ApiServer.Controllers
{
[ApiController, Route("[controller]")]
public class DataController : ControllerBase
{
private Logger log = LogManager.GetCurrentClassLogger();
[HttpPost, Route("check")]
public DataCheckClient Check([FromBody] object value)
{
try
{
var getResult = JsonConvert.DeserializeObject<DataCheckApi>(value.ToString());
if (!getResult.Status || string.IsNullOrEmpty(getResult.Name))
{
log.Warn("Wrong answer.");
return new DataCheckClient();
}
var dataDir = Path.Combine(
Directory.GetCurrentDirectory(),
"data", "data",
getResult.DateAndTime.Year.ToString("D4"),
getResult.DateAndTime.Month.ToString("D2"),
getResult.DateAndTime.Day.ToString("D2"),
getResult.Name);
log.Info("Search data: " + dataDir);
if (!System.IO.File.Exists(dataDir))
{
log.Info("Data not exist: " + dataDir);
return new DataCheckClient { Status = true, Exist = false, DataSize = 0 };
}
var dataArr = System.IO.File.ReadAllBytes(dataDir);
log.Info("Send data size: " + dataArr.Length + " | " + dataDir);
return new DataCheckClient { Status = true, Exist = true, DataSize = (ulong)dataArr.Length };
}
catch (Exception e)
{
log.Warn(e);
return new DataCheckClient();
}
}
[HttpPost, Route("create")]
public DataCreateClient Create([FromBody] object value)
{
try
{
var getResult = JsonConvert.DeserializeObject<DataCreateApi>(value.ToString());
if (!getResult.Status ||
string.IsNullOrEmpty(getResult.Name) ||
getResult.Struct.Length == 0)
{
log.Warn("Wrong answer.");
return new DataCreateClient();
}
var dataDir = Path.Combine(
Directory.GetCurrentDirectory(),
"data", "data",
getResult.DateAndTime.Year.ToString("D4"),
getResult.DateAndTime.Month.ToString("D2"),
getResult.DateAndTime.Day.ToString("D2"));
if (!Directory.Exists(dataDir))
Directory.CreateDirectory(dataDir);
dataDir = Path.Combine(dataDir, getResult.Name);
System.IO.File.WriteAllBytes(dataDir, getResult.Struct);
log.Info("Save data: " + dataDir);
return new DataCreateClient { Status = true };
}
catch (Exception e)
{
log.Warn(e);
return new DataCreateClient();
}
}
}
}