73 lines
2.7 KiB
C#
73 lines
2.7 KiB
C#
using FileService.Application.UploadFileTask;
|
|
using FileService.Infrastructure;
|
|
using IM.ASPNETCore;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using System.Security.Claims;
|
|
|
|
namespace FileService.WebApi.Controllers.FileTask
|
|
{
|
|
[Authorize]
|
|
[Route("api/[controller]")]
|
|
[ApiController]
|
|
public class FileTaskController : ControllerBase
|
|
{
|
|
private readonly UploadFileTaskService service;
|
|
|
|
public FileTaskController(UploadFileTaskService service)
|
|
{
|
|
this.service = service;
|
|
}
|
|
|
|
[HttpPost("init")]
|
|
[UnitOfWork(typeof(FileDbContext))]
|
|
public async Task<IActionResult> Init(FileTaskInitRequest request)
|
|
{
|
|
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
|
|
var res = await service.InitTaskAsync(new UploadTaskInitCommand(
|
|
UploaderId: Guid.Parse(userId),
|
|
ConversationId: request.ConversationId,
|
|
FileName: request.FileName,
|
|
FileSize: request.FileSize,
|
|
contentType: request.ContentType,
|
|
checkSum: request.CheckSum
|
|
));
|
|
return Ok(res);
|
|
}
|
|
|
|
[HttpGet("progress")]
|
|
public async Task<IActionResult> Progress(string sessionId)
|
|
{
|
|
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
|
|
var res = await service.GetProgressAsync(sessionId, Guid.Parse(userId));
|
|
return Ok(res);
|
|
}
|
|
|
|
[HttpGet("Getuploadurl")]
|
|
public async Task<IActionResult> GetUploadUrl(string sessionId, int partNum)
|
|
{
|
|
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
|
|
var res = await service.GenerateUrlAsync(sessionId, partNum, Guid.Parse(userId));
|
|
return Ok(res);
|
|
}
|
|
|
|
[HttpPost("complete")]
|
|
public async Task<IActionResult> Complete([FromBody] CompleteTaskRequest request)
|
|
{
|
|
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
|
|
var res = await service.CompleteTaskAsync(new UploadTaskCompleteCommand(request.SessionId, Guid.Parse(userId), request.Parts));
|
|
return Ok(res);
|
|
}
|
|
|
|
[HttpPost("local/parts/upload")]
|
|
public async Task<IActionResult> LocalUpload(string sessionId, int partNumber, IFormFile file)
|
|
{
|
|
//var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
|
|
var stream = file.OpenReadStream();
|
|
var res = await service.UploadPartAsync(new UploadPartCommand(stream, sessionId, partNumber, file.Length));
|
|
return Ok(res);
|
|
}
|
|
}
|
|
}
|