diff --git a/Models/PictureModels.cs b/Models/PictureModels.cs index c8798a2..3e987bb 100644 --- a/Models/PictureModels.cs +++ b/Models/PictureModels.cs @@ -16,6 +16,89 @@ namespace Chtn.CSharp.SDK.Models.Media [JsonProperty("path")] public string Path { get; set; } [JsonProperty("title")] public string Title { get; set; } [JsonProperty("uploaded_at")] public TimeStamp UploadedAt { get; set; } + [JsonProperty("likes")] public int Likes { get; set; } + [JsonProperty("visibility")] public string Visibility { get; set; } + } + public class Comment + { + [JsonProperty("id")] public string Id { get; set; } + [JsonProperty("authorId")] public string AuthorId { get; set; } + [JsonProperty("content")] public string Content { get; set; } + [JsonProperty("createdAt")] public TimeStamp CreatedAt{ get; set; } + } + + public class GetReq + { + [JsonProperty("id")] public string Id { get; set; } + } + + public class CreateAlbumReq + { + [JsonProperty("name")] public string Name { get; set; } + } + + public class FinalizeUploadReq + { + [JsonProperty("uploadId")] public string UploadId { get; set; } + } + + public class DeleteImageReq + { + [JsonProperty("id")] public string Id { get; set; } + } + + public class ChangePictureVisibilityReq + { + [JsonProperty("id")] public string Id { get; set; } + [JsonProperty("visibility")] public string Visibility { get; set; } + } + + public class EditPictureTitle + { + [JsonProperty("id")] public string Id { get; set; } + [JsonProperty("title")] public string Title { get; set; } + } + + public class TogglePictureLikeReq + { + [JsonProperty("id")] public string Id { get; set; } + } + + public class PostCommentReq + { + [JsonProperty("imageId")] public string ImageId { get; set; } + [JsonProperty("content")] public string Content { get; set; } + } + + public class ToggleFollowReq + { + [JsonProperty("targetUserId")] public string TargetUserId { get; set; } + } + + public class GetAlbumsReq + { + [JsonProperty("userId")] public string UserId { get; set; } + } + + public class GetCommentsReq + { + [JsonProperty("imageId")] public string ImageId { get; set; } + } + + public class UploadImageReq + { + [JsonProperty("albumId")] public string AlbumId { get; set; } + [JsonProperty("data")] public byte[] Data { get; set; } + } + + public class GetResp + { + [JsonProperty("image")] public Image Image { get; set; } + } + + public class DiscoveryResp + { + [JsonProperty("trending")] public List Trending { get; set; } } } \ No newline at end of file diff --git a/Services/PictureMethods.cs b/Services/PictureMethods.cs new file mode 100644 index 0000000..6917e51 --- /dev/null +++ b/Services/PictureMethods.cs @@ -0,0 +1,63 @@ +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); + } +}