using System; using System.Threading.Tasks; using Chtn.CSharp.SDK.Core; using Chtn.CSharp.SDK.Models.Media; namespace Chtn.CSharp.SDK.Services { public interface IFileTransferService { Task StartNew(StartNewFileTransferReq req); Task Accept(AcceptFileTransferReq req); Task Decline(DeclineFileTransferReq req); Task SendRtcOffer(FileTransferSendOfferRTCReq req); Task SendRtcAnswer(FileTransferSendAnswerRTCReq req); Task SendRtcIce(FileTransferSendICERTCReq req); } public class FileTransferServiceProvider : IFileTransferService { private readonly ApiClient _apiClient; public FileTransferServiceProvider(ApiClient apiClient) { _apiClient = apiClient ?? throw new ArgumentNullException(nameof(ApiClient)); } public async Task StartNew(StartNewFileTransferReq req) => await _apiClient.PostAsync("v2/chat/dm/startNewFileTransfer", req); public async Task Accept(AcceptFileTransferReq req) => await _apiClient.PostAsync("v2/chat/dm/acceptFileTransfer", req); public async Task Decline(DeclineFileTransferReq req) => await _apiClient.PostAsync("v2/chat/dm/declineFileTransfer", req); public async Task SendRtcOffer(FileTransferSendOfferRTCReq req) => await _apiClient.PostAsync("v2/chat/dm/sendRtcOfferFileTransfer", req); public async Task SendRtcAnswer(FileTransferSendAnswerRTCReq req) => await _apiClient.PostAsync("v2/chat/dm/sendRtcAnswerFileTransfer", req); public async Task SendRtcIce(FileTransferSendICERTCReq req) => await _apiClient.PostAsync("v2/chat/dm/sendRtcICEFileTransfer", req); } }