diff --git a/Models/DMServiceModels.cs b/Models/DMServiceModels.cs index 776c23d..ef98687 100644 --- a/Models/DMServiceModels.cs +++ b/Models/DMServiceModels.cs @@ -13,17 +13,108 @@ namespace Chtn.CSharp.SDK.Models.Chat.DM [JsonProperty("files")] public List Files { get; set; } } - public class DmPinMessageReq + public class PinnedMessage : DmMessage { } + + public class GetMessagesReq { [JsonProperty("chatid")] public string ChatId { get; set; } - [JsonProperty("messageId")] public string MessageId { get; set; } - [JsonProperty("userid")] public string UserId { get; set; } + [JsonProperty("limit")] public string Limit { get; set; } } - public class DmJoinWsRoomReq + public class GetMessagePosReq + { + [JsonProperty("chatid")] public string ChatId { get; set; } + [JsonProperty("msgid")] public string MessageId { get; set; } + } + + public class GetPinnedMessagesReq + { + [JsonProperty("chatid")] public string ChatId { get; set; } + } + + public class EditMessageReq + { + [JsonProperty("chatid")] public string ChatId { get; set; } + [JsonProperty("limit")] public string Limit { get; set; } + [JsonProperty("content")] public string Content { get; set; } + } + + public class DeleteMessageReq + { + [JsonProperty("chatid")] public string ChatId { get; set; } + [JsonProperty("msgid")] public string MessageId { get; set; } + } + + public class FinishMessageReq + { + [JsonProperty("chatid")] public string ChatId { get; set; } + [JsonProperty("msgid")] public string MessageId { get; set; } + } + + public class ReadMessagesReq + { + [JsonProperty("chatid")] public string ChatId { get; set; } + } + + public class PinMessageReq + { + [JsonProperty("chatid")] public string ChatId { get; set; } + [JsonProperty("msgid")] public string MessageId { get; set; } + } + + public class UnpinMessageReq + { + [JsonProperty("chatid")] public string ChatId { get; set; } + [JsonProperty("msgid")] public string MessageId { get; set; } + } + + public class DeleteMessagesReq + { + [JsonProperty("chatid")] public string ChatId { get; set; } + [JsonProperty("userId")] public string UserId { get; set; } + } + + public class JoinWsRoomReq { [JsonProperty("connId")] public string ConnId { get; set; } [JsonProperty("chatid")] public string ChatId { get; set; } - [JsonProperty("userid")] public string UserId { get; set; } + } + + public class GetMessagePosResp + { + [JsonProperty("pos")] public int Position { get; set; } + } + + public class WSMessageDeletedPayload + { + [JsonProperty("msgid")] public string MessageId { get; set; } + [JsonProperty("chatid")] public string ChatId { get; set; } + } + + public class WSMessageEditedPayload + { + [JsonProperty("msgid")] public string MessageId { get; set; } + [JsonProperty("content")] public string Content { get; set; } + } + + public class WSNewMessagePayload + { + [JsonProperty("message")] public DmMessage Message { get; set; } + } + + public class WSMessagePinnedPayload + { + [JsonProperty("msgid")] public string MessageId { get; set; } + } + + public class WSMessagesReadPayload + { + [JsonProperty("chatid")] public string ChatId { get; set; } + [JsonProperty("readerId")] public string ReaderId { get; set; } + } + + public class WSMessageUnpinnedPayload + { + [JsonProperty("msgid")] public string MessageId { get; set; } } } \ No newline at end of file diff --git a/Services/DMServiceMethods.cs b/Services/DMServiceMethods.cs new file mode 100644 index 0000000..4367d54 --- /dev/null +++ b/Services/DMServiceMethods.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Chtn.CSharp.SDK.Core; +using Chtn.CSharp.SDK.Models.Chat.DM; + +namespace Chtn.CSharp.SDK.Services +{ + public interface IDMService + { + Task> Get(GetMessagesReq req); + Task GetMessagePos(GetMessagePosReq req); + Task> GetPinnedMessages(GetPinnedMessagesReq req); + Task EditMessage(EditMessageReq req); + Task DeleteMessage(DeleteMessageReq req); + Task FinishMessage(FinishMessageReq req); + Task ReadMessages(ReadMessagesReq req); + Task PinMessage(PinMessageReq req); + Task UnpinMessage(UnpinMessageReq req); + Task DeleteMessages(DeleteMessagesReq req); + Task JoinWebsocketRoom(JoinWsRoomReq req); + } + + public class DMServiceProvider : IDMService + { + private readonly ApiClient _apiClient; + public DMServiceProvider(ApiClient apiClient) + { + _apiClient = apiClient ?? throw new ArgumentNullException(nameof(apiClient)); + } + public async Task> Get(GetMessagesReq req) => + await _apiClient.PostAsync>("chat/dm/messages", req); + + public async Task GetMessagePos(GetMessagePosReq req) => + await _apiClient.PostAsync("chat/dm/getMessagePosition", req); + + public async Task> GetPinnedMessages(GetPinnedMessagesReq req) => + await _apiClient.PostAsync>("chat/dm/pinnedMessages", req); + + public async Task EditMessage(EditMessageReq req) => + await _apiClient.PostAsync("chat/dm/editMessage", req); + + public async Task DeleteMessage(DeleteMessageReq req) => + await _apiClient.PostAsync("chat/dm/deleteMessage", req); + + public async Task FinishMessage(FinishMessageReq req) => + await _apiClient.PostAsync("chat/dm/finishMessage", req); + + public async Task ReadMessages(ReadMessagesReq req) => + await _apiClient.PostAsync("chat/dm/readMessages", req); + + public async Task PinMessage(PinMessageReq req) => + await _apiClient.PostAsync("chat/dm/pinMessage", req); + + public async Task UnpinMessage(UnpinMessageReq req) => + await _apiClient.PostAsync("chat/dm/unpinMessage", req); + + public async Task DeleteMessages(DeleteMessagesReq req) => + await _apiClient.PostAsync("chat/dm/deleteMessages", req); + + public async Task JoinWebsocketRoom(JoinWsRoomReq req) => + await _apiClient.PostAsync("v2/chat/dm/joinWebSocketRoom", req); + } +}