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 IPictureService { Task Get(GetReq req); Task Discovery(); Task CreateAlbum(CreateAlbumReq req); Task FinalizeUpload(FinalizeUploadReq req); Task Delete(DeleteImageReq req); Task ChangeVisibility(ChangePictureVisibilityReq req); Task EditTitle(EditPictureTitle req); Task ToggleLike(TogglePictureLikeReq req); Task Comment(PostCommentReq req); Task ToggleFollow(ToggleFollowReq req); Task> GetAlbums(GetAlbumsReq req); Task> GetComments(GetCommentsReq req); Task UploadPicture(UploadImageReq req); } public class PictureServiceProvider : IPictureService { private readonly ApiClient _apiClient; public PictureServiceProvider(ApiClient apiClient) { _apiClient = apiClient ?? throw new ArgumentNullException(nameof(apiClient)); } public async Task Get(GetReq req) => await _apiClient.PostAsync("picture/pictures", req); public async Task Discovery() => await _apiClient.PostAsync("picture/discovery", new { }); public async Task CreateAlbum(CreateAlbumReq req) => await _apiClient.PostAsync("picture/createAlbum", req); public async Task FinalizeUpload(FinalizeUploadReq req) => await _apiClient.PostAsync("picture/finalizeUpload", req); public async Task Delete(DeleteImageReq req) => await _apiClient.PostAsync("picture/delete", req); public async Task ChangeVisibility(ChangePictureVisibilityReq req) => await _apiClient.PostAsync("picture/changeVisibility", req); public async Task EditTitle(EditPictureTitle req) => await _apiClient.PostAsync("picture/editTitle", req); public async Task ToggleLike(TogglePictureLikeReq req) => await _apiClient.PostAsync("picture/toggleLike", req); public async Task Comment(PostCommentReq req) => await _apiClient.PostAsync("picture/comment", req); public async Task ToggleFollow(ToggleFollowReq req) => await _apiClient.PostAsync("picture/toggleFollow", req); public async Task> GetAlbums(GetAlbumsReq req) => await _apiClient.PostAsync>("picture/getAlbums", req); public async Task> GetComments(GetCommentsReq req) => await _apiClient.PostAsync>("picture/comment", req); public async Task UploadPicture(UploadImageReq req) => await _apiClient.PostAsync("picture/upload", req); } }