using System; using System.Collections.Generic; using System.Threading.Tasks; using Chtn.CSharp.SDK.Core; using Chtn.CSharp.SDK.Models.Network; namespace Chtn.CSharp.SDK.Services { public interface INetworkService { // General & Discovery Task CreateInvite(CreateInviteReq req); Task> GetInvites(GetInvitesReq req); Task Create(CreateNetworkReq req); Task> GetNetworks(GetNetworksReq req); Task AcceptInvite(AcceptInviteReq req); Task JoinPublicNetwork(JoinPublicNetworkReq req); Task Leave(LeaveNetworkReq req); Task Delete(DeleteNetworkReq req); Task GetFromInvite(GetFromInviteReq req); Task GetDiscovery(); // Categories Task CreateCategory(CreateCategoryReq req); Task DeleteCategory(DeleteCategoryReq req); Task MoveCategory(MoveCategoryReq req); Task EditCategory(EditCategoryReq req); Task ToggleCategoryMute(ToggleCategoryMuteReq req); // Channels Task CreateChannel(CreateChannelReq req); Task EditChannel(EditChannelReq req); Task ToggleChannelMute(ToggleChannelMuteReq req); // Ranks & Members Task CreateRank(CreateRankReq req); Task DeleteRank(DeleteRankReq req); Task MoveRank(MoveRankReq req); Task EditRank(EditRankReq req); Task AssignRankToMember(AssignRankToMemberReq req); Task RemoveRankFromMember(RemoveRankFromMemberReq req); Task> GetMembers(GetMembersReq req); // Moderation Task KickMember(KickMemberReq req); Task BanMember(BanMemberReq req); Task UnbanMember(UnbanMemberReq req); Task> GetBannedMembers(GetBannedMembersReq req); //Permissions & Overwrites Task ModifyRankPermissions(ModifyPermissionsReq req); Task OverwritePermission(OverwritePermissionReq req); Task OverwriteChannelPermission(OverwriteChannelPermissionReq req); Task> GetOverwrites(GetOverwritesReq req); Task> GetChannelOverwrites(GetChannelOverwritesReq req); // Settings & Realtime Task UploadNewPic(UploadNewPictureReq req); Task ChangeVisibility(ChangeVisibilityReq req); Task EditName(EditNameReq req); Task ToggleMute(ToggleNetworkMuteReq req); Task JoinWebSocketRoom(JoinWebSocketRoomReq req); } public class NetworkServiceProvider : INetworkService { private readonly ApiClient _apiClient; public NetworkServiceProvider(ApiClient apiClient) { _apiClient = apiClient ?? throw new ArgumentNullException(nameof(apiClient)); } #region General & Discovery public async Task CreateInvite(CreateInviteReq req) => await _apiClient.PostAsync("network/createInvite", req); public async Task> GetInvites(GetInvitesReq req) => await _apiClient.PostAsync>("network/invites", req); public async Task Create(CreateNetworkReq req) => await _apiClient.PostAsync("network/create", req); public async Task> GetNetworks(GetNetworksReq req) => await _apiClient.PostAsync>("network/get", req); public async Task AcceptInvite(AcceptInviteReq req) => await _apiClient.PostAsync("network/acceptInvite", req); public async Task JoinPublicNetwork(JoinPublicNetworkReq req) => await _apiClient.PostAsync("network/joinNetworkDiscovery", req); public async Task Leave(LeaveNetworkReq req) => await _apiClient.PostAsync("network/leave", req); public async Task Delete(DeleteNetworkReq req) => await _apiClient.PostAsync("network/delete", req); public async Task GetFromInvite(GetFromInviteReq req) => await _apiClient.PostAsync("network/fromInvite", req); public async Task GetDiscovery() => await _apiClient.PostAsync("network/discovery", new { }); #endregion #region Categories public async Task CreateCategory(CreateCategoryReq req) => await _apiClient.PostAsync("network/createCategory", req); public async Task DeleteCategory(DeleteCategoryReq req) => await _apiClient.PostAsync("network/deleteCategory", req); public async Task MoveCategory(MoveCategoryReq req) => await _apiClient.PostAsync("network/moveCategory", req); public async Task EditCategory(EditCategoryReq req) => await _apiClient.PostAsync("network/editCategory", req); public async Task ToggleCategoryMute(ToggleCategoryMuteReq req) => await _apiClient.PostAsync("network/toggleCatMute", req); #endregion #region Channels public async Task CreateChannel(CreateChannelReq req) => await _apiClient.PostAsync("network/createChannel", req); public async Task EditChannel(EditChannelReq req) => await _apiClient.PostAsync("network/editChannel", req); public async Task ToggleChannelMute(ToggleChannelMuteReq req) => await _apiClient.PostAsync("network/toggleChanMute", req); #endregion #region Ranks & Members public async Task CreateRank(CreateRankReq req) => await _apiClient.PostAsync("network/createRank", req); public async Task DeleteRank(DeleteRankReq req) => await _apiClient.PostAsync("network/deleteRank", req); public async Task MoveRank(MoveRankReq req) => await _apiClient.PostAsync("network/moveRank", req); public async Task EditRank(EditRankReq req) => await _apiClient.PostAsync("network/editRank", req); public async Task AssignRankToMember(AssignRankToMemberReq req) => await _apiClient.PostAsync("network/assignRankToMember", req); public async Task RemoveRankFromMember(RemoveRankFromMemberReq req) => await _apiClient.PostAsync("network/removeRankFromMember", req); public async Task> GetMembers(GetMembersReq req) => await _apiClient.PostAsync>("network/getMembers", req); #endregion #region Moderation public async Task KickMember(KickMemberReq req) => await _apiClient.PostAsync("network/kickMember", req); public async Task BanMember(BanMemberReq req) => await _apiClient.PostAsync("network/banMember", req); public async Task UnbanMember(UnbanMemberReq req) => await _apiClient.PostAsync("network/unbanMember", req); public async Task> GetBannedMembers(GetBannedMembersReq req) => await _apiClient.PostAsync>("network/getBannedMembers", req); #endregion #region Permissions & Overwrites public async Task ModifyRankPermissions(ModifyPermissionsReq req) => await _apiClient.PostAsync("network/modifyPermissions", req); public async Task OverwritePermission(OverwritePermissionReq req) => await _apiClient.PostAsync("network/overwritePermission", req); public async Task OverwriteChannelPermission(OverwriteChannelPermissionReq req) => await _apiClient.PostAsync("network/overwriteChannelPermission", req); public async Task> GetOverwrites(GetOverwritesReq req) => await _apiClient.PostAsync>("network/getOverwrites", req); public async Task> GetChannelOverwrites(GetChannelOverwritesReq req) => await _apiClient.PostAsync>("network/getChannelOverwrites", req); #endregion #region Settings & Real-time public async Task UploadNewPic(UploadNewPictureReq req) => await _apiClient.PostAsync("v2/network/uploadNewPic", req); public async Task ChangeVisibility(ChangeVisibilityReq req) => await _apiClient.PostAsync("network/changeVisibility", req); public async Task EditName(EditNameReq req) => await _apiClient.PostAsync("network/editName", req); public async Task ToggleMute(ToggleNetworkMuteReq req) => await _apiClient.PostAsync("network/toggleNetMute", req); public async Task JoinWebSocketRoom(JoinWebSocketRoomReq req) => await _apiClient.PostAsync("v2/network/joinWebSocketRoom", req); #endregion } }