forked from SoDOff-Project/sodoff-mmo
Messaging Extension Endpoints #2
37
src/CommandHandlers/SendMessageBoardHandler.cs
Normal file
37
src/CommandHandlers/SendMessageBoardHandler.cs
Normal file
@ -0,0 +1,37 @@
|
||||
using System;
|
||||
using sodoffmmo.Attributes;
|
||||
using sodoffmmo.Core;
|
||||
using sodoffmmo.Data;
|
||||
|
||||
namespace sodoffmmo.CommandHandlers;
|
||||
|
||||
[ExtensionCommandHandler("SMB")]
|
||||
class SendMessageBoardHandler : CommandHandler
|
||||
{
|
||||
public override Task Handle(Client client, NetworkObject receivedObject)
|
||||
{
|
||||
NetworkObject args = receivedObject.Get<NetworkObject>("p");
|
||||
|
||||
string toUserId = args.Get<string>("tgt");
|
||||
string content = args.Get<string>("cnt");
|
||||
string level = args.Get<string>("lvl");
|
||||
|
||||
if (toUserId == string.Empty) toUserId = client.PlayerData.Uid; // send to self
|
||||
|
||||
ApiWebService apiWebService = new();
|
||||
|
||||
// first check for any kind of ban
|
||||
var banType = apiWebService.CheckForUserBan(client);
|
||||
|
||||
if (banType != null && banType >= UserBanType.TemporaryOpenChatBan) { client.Send(Utils.ArrNetworkPacket(new string[] { "SMF" }, "SMF")); return Task.CompletedTask; }
|
||||
|
||||
// send message
|
||||
var result = apiWebService.SendMessageBoard(client, toUserId, content, level, "0");
|
||||
|
||||
if (result)
|
||||
client.Send(Utils.ArrNetworkPacket(new string[] { "SMA", "-1", "SUCCESS", "1", DateTime.UtcNow.ToString() }, "SMA"));
|
||||
else client.Send(Utils.ArrNetworkPacket(new string[] { "SMF" }, "SMF"));
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
38
src/CommandHandlers/SendMessageReplyHandler.cs
Normal file
38
src/CommandHandlers/SendMessageReplyHandler.cs
Normal file
@ -0,0 +1,38 @@
|
||||
using System;
|
||||
using sodoffmmo.Attributes;
|
||||
using sodoffmmo.Core;
|
||||
using sodoffmmo.Data;
|
||||
|
||||
namespace sodoffmmo.CommandHandlers;
|
||||
|
||||
[ExtensionCommandHandler("SMR")]
|
||||
class SendMessageReplyHandler : CommandHandler
|
||||
{
|
||||
public override Task Handle(Client client, NetworkObject receivedObject)
|
||||
{
|
||||
NetworkObject args = receivedObject.Get<NetworkObject>("p");
|
||||
|
||||
string toUserId = args.Get<string>("tgt");
|
||||
string content = args.Get<string>("cnt");
|
||||
string level = args.Get<string>("lvl");
|
||||
string msgId = args.Get<string>("rtm");
|
||||
|
||||
if (toUserId == string.Empty) toUserId = client.PlayerData.Uid; // send to self
|
||||
|
||||
ApiWebService apiWebService = new();
|
||||
|
||||
// first check for any kind of ban
|
||||
var banType = apiWebService.CheckForUserBan(client);
|
||||
|
||||
if (banType != null && banType >= UserBanType.TemporaryOpenChatBan) { client.Send(Utils.ArrNetworkPacket(new string[] { "SMF" }, "SMF")); return Task.CompletedTask; }
|
||||
|
||||
// send message
|
||||
var result = apiWebService.SendMessageBoard(client, toUserId, content, level, msgId);
|
||||
|
||||
if (result)
|
||||
client.Send(Utils.ArrNetworkPacket(new string[] { "SMA", "-1", "SUCCESS", "1", DateTime.UtcNow.ToString() }, "SMA"));
|
||||
else client.Send(Utils.ArrNetworkPacket(new string[] { "SMF" }, "SMF"));
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
@ -48,6 +48,32 @@ public class ApiWebService
|
||||
} catch (Exception e) { LogError(e.Message); return null; }
|
||||
}
|
||||
|
||||
public bool SendMessageBoard(Client client, string userId, string data, string level, string replyMessageId)
|
||||
{
|
||||
HttpClient httpClient = new();
|
||||
var content = new FormUrlEncodedContent
|
||||
(
|
||||
new Dictionary<string, string>
|
||||
{
|
||||
{ "token", client.PlayerData.UNToken },
|
||||
{ "userId", userId },
|
||||
{ "data", data },
|
||||
{ "messageLevel", level },
|
||||
{ "replyMessageId", replyMessageId }
|
||||
}
|
||||
);
|
||||
httpClient.Timeout = new TimeSpan(0, 0, 3);
|
||||
|
||||
try
|
||||
{
|
||||
var response = httpClient.PostAsync($"{Configuration.ServerConfiguration.ApiUrl}/Messaging/PostTextMessage", content).Result;
|
||||
Log("Messaging/PostTextMessage");
|
||||
|
||||
if (response.StatusCode == System.Net.HttpStatusCode.OK && response.Content != null) return response.Content.ReadFromJsonAsync<bool>().Result;
|
||||
else return false;
|
||||
} catch (Exception e) { LogError(e.Message); return false; }
|
||||
}
|
||||
|
||||
private void Log(string endpoint) => Console.WriteLine($"Sent API Request To {Configuration.ServerConfiguration.ApiUrl}/{endpoint}");
|
||||
|
||||
private void LogError(string message) => Console.WriteLine($"An Error Has Occured When Sending An API Request - {message}");
|
||||
|
Loading…
x
Reference in New Issue
Block a user