diff --git a/Models/FileUploadModels.cs b/Models/FileUploadModels.cs index e838a6d..f4cc2cc 100644 --- a/Models/FileUploadModels.cs +++ b/Models/FileUploadModels.cs @@ -16,5 +16,20 @@ namespace Chtn.CSharp.SDK.Models.Media [JsonProperty("name")] public string Name { get; set; } [JsonProperty("fileId")] public string FileId { get; set; } } - public class RegisterUploadResp { public string UploadId { get; set; } } + public class RegisterUploadResp + { + [JsonProperty("uploadId")] public string UploadId { get; set; } + } + + public class ChunkUploadReq + { + [JsonProperty("uploadId")] public string UploadId { get; set; } + [JsonProperty("chunkIndex")] public int ChunkIndex { get; set; } + [JsonProperty("data")] public byte[] Data { get; set; } + } + + public class FinishUploadReq + { + [JsonProperty("uploadId")] public string UploadId { get; set; } + } } \ No newline at end of file diff --git a/Services/FileUploadMethods.cs b/Services/FileUploadMethods.cs new file mode 100644 index 0000000..38fbc5a --- /dev/null +++ b/Services/FileUploadMethods.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Chtn.CSharp.SDK.Core; +using Chtn.CSharp.SDK.Models.Media; + +namespace Chtn.CSharp.SDK.Services +{ + public interface IFileUploadService + { + Task UploadFiles(RegisterUploadReq req); + Task UploadFile(RegisterUploadReq req); + Task UploadChunk(ChunkUploadReq req); + } + + public class FileUploadServiceProvider : IFileUploadService + { + private readonly ApiClient _apiClient; + + public FileUploadServiceProvider(ApiClient apiClient) + { + _apiClient = apiClient ?? throw new ArgumentNullException(nameof(apiClient)); + } + + public async Task UploadFiles(RegisterUploadReq req) => + await _apiClient.PostAsync("chat/cdnRegisterUpload", req); + + public async Task UploadFile(RegisterUploadReq req) => + await UploadFiles(req); + + public async Task UploadChunk(ChunkUploadReq req) => + await _apiClient.PostAsync("chat/uploadChunk", req); + } +}