Files
SDK-CSharp/Services/PictureMethods.cs

64 lines
3.1 KiB
C#

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<GetResp> Get(GetReq req);
Task<DiscoveryResp> 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<List<Album>> GetAlbums(GetAlbumsReq req);
Task<List<Comment>> 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<GetResp> Get(GetReq req) =>
await _apiClient.PostAsync<GetReq, GetResp>("picture/pictures", req);
public async Task<DiscoveryResp> Discovery() =>
await _apiClient.PostAsync<object, DiscoveryResp>("picture/discovery", new { });
public async Task CreateAlbum(CreateAlbumReq req) =>
await _apiClient.PostAsync<CreateAlbumReq, object>("picture/createAlbum", req);
public async Task FinalizeUpload(FinalizeUploadReq req) =>
await _apiClient.PostAsync<FinalizeUploadReq, object>("picture/finalizeUpload", req);
public async Task Delete(DeleteImageReq req) =>
await _apiClient.PostAsync<DeleteImageReq, object>("picture/delete", req);
public async Task ChangeVisibility(ChangePictureVisibilityReq req) =>
await _apiClient.PostAsync<ChangePictureVisibilityReq, object>("picture/changeVisibility", req);
public async Task EditTitle(EditPictureTitle req) =>
await _apiClient.PostAsync<EditPictureTitle, object>("picture/editTitle", req);
public async Task ToggleLike(TogglePictureLikeReq req) =>
await _apiClient.PostAsync<TogglePictureLikeReq, object>("picture/toggleLike", req);
public async Task Comment(PostCommentReq req) =>
await _apiClient.PostAsync<PostCommentReq, object>("picture/comment", req);
public async Task ToggleFollow(ToggleFollowReq req) =>
await _apiClient.PostAsync<ToggleFollowReq, object>("picture/toggleFollow", req);
public async Task<List<Album>> GetAlbums(GetAlbumsReq req) =>
await _apiClient.PostAsync<GetAlbumsReq, List<Album>>("picture/getAlbums", req);
public async Task<List<Comment>> GetComments(GetCommentsReq req) =>
await _apiClient.PostAsync<GetCommentsReq, List<Comment>>("picture/comment", req);
public async Task UploadPicture(UploadImageReq req) =>
await _apiClient.PostAsync<UploadImageReq, object>("picture/upload", req);
}
}