Initialize
This commit is contained in:
68
ApiControllers/SyncV1Controller.cs
Normal file
68
ApiControllers/SyncV1Controller.cs
Normal file
@ -0,0 +1,68 @@
|
||||
using System.IO;
|
||||
using FileExposer.Models;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace FileExposer.ApiControllers;
|
||||
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class SyncV1Controller(ISyncV1Repository SyncRepository) : Controller, ISyncV1Controller<IActionResult, IFormFileCollection>
|
||||
{
|
||||
|
||||
private readonly ISyncV1Repository _SyncRepository = SyncRepository;
|
||||
|
||||
[HttpGet]
|
||||
public IActionResult Get(string path, long? size = null, long? ticks = null)
|
||||
{
|
||||
Get result = _SyncRepository.Get(path, size, ticks);
|
||||
if (result.Bytes is not null)
|
||||
return File(result.Bytes, "text/plain");
|
||||
if (!string.IsNullOrEmpty(result.JSON))
|
||||
return Content(result.JSON, "application/json", System.Text.Encoding.UTF8);
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public IActionResult Post()
|
||||
{
|
||||
string result = _SyncRepository.Post(Request.Body);
|
||||
return Content(result, "application/json", System.Text.Encoding.UTF8);
|
||||
}
|
||||
|
||||
[HttpDelete]
|
||||
public IActionResult Delete(string path, long size, long ticks)
|
||||
{
|
||||
_SyncRepository.Delete(path, size, ticks);
|
||||
return Ok($"{size}-{ticks}");
|
||||
}
|
||||
|
||||
[HttpPut]
|
||||
[ApiExplorerSettings(IgnoreApi = true)]
|
||||
public IActionResult Put([FromForm] string path, IFormFileCollection formFiles)
|
||||
{
|
||||
foreach (IFormFile formFile in formFiles)
|
||||
_SyncRepository.Put(path, formFile.FileName, formFile.OpenReadStream());
|
||||
return Ok();
|
||||
}
|
||||
|
||||
[HttpPatch]
|
||||
[ApiExplorerSettings(IgnoreApi = true)]
|
||||
public IActionResult Patch([FromForm] string path, [FromForm] IFormFileCollection formFiles)
|
||||
{
|
||||
foreach (IFormFile formFile in formFiles)
|
||||
_SyncRepository.Patch(path, formFile.FileName, formFile.OpenReadStream());
|
||||
return Ok();
|
||||
}
|
||||
|
||||
}
|
||||
// string st = "d:/Tmp/phares/VisualStudioCode/z-include-patterns - Copy.nsv";
|
||||
// using HttpRequestMessage httpRequestMessage = new(HttpMethod.Patch, page);
|
||||
// using MultipartFormDataContent multipartFormDataContent = new();
|
||||
// multipartFormDataContent.Add(new ByteArrayContent(File.ReadAllBytes(st)), "formFiles", $"RelativePath:Test.txt|Size:4|Ticks:1143241;");
|
||||
// multipartFormDataContent.Add(new ByteArrayContent(File.ReadAllBytes(st)), "formFiles", "NewTest.txt");
|
||||
// multipartFormDataContent.Add(new ByteArrayContent(File.ReadAllBytes(st)), "formFiles", "NewestTest.txt");
|
||||
// multipartFormDataContent.Add(new StringContent(path, "path", path);
|
||||
// httpRequestMessage.Content = multipartFormDataContent;
|
||||
// Task<HttpResponseMessage> httpResponseMessage = httpClient.SendAsync(httpRequestMessage);
|
||||
// httpResponseMessage.Wait();
|
Reference in New Issue
Block a user