50 lines
1.4 KiB
C#
50 lines
1.4 KiB
C#
using Newtonsoft.Json;
|
|
|
|
namespace MessengerApi.Contracts.MessageParser
|
|
{
|
|
public class MessageParser<TRequest, TResponse> : IMessageParser<TRequest, TResponse>
|
|
{
|
|
public OutboxMessage GetMessageFromRequest(
|
|
TRequest request,
|
|
int targetUserId)
|
|
{
|
|
var message = new OutboxMessage
|
|
{
|
|
|
|
}
|
|
apikey,
|
|
targetUserId,
|
|
typeof(TRequest).Name,
|
|
JsonConvert.SerializeObject(request));
|
|
|
|
return message;
|
|
}
|
|
|
|
public OutboxMessage GetMessageFromResponse(
|
|
TResponse response,
|
|
string apiKey,
|
|
int targetUserId,
|
|
InboxMessage requestOrigin = null)
|
|
{
|
|
var message = new OutboxMessage(
|
|
apiKey,
|
|
targetUserId,
|
|
requestOrigin.PayloadType,
|
|
JsonConvert.SerializeObject(response));
|
|
|
|
return message;
|
|
}
|
|
|
|
public TRequest GetRequestFromMessage(InboxMessage message)
|
|
{
|
|
var request = JsonConvert.DeserializeObject<TRequest>(message.Payload);
|
|
return request;
|
|
}
|
|
|
|
public TResponse GetResponseFromMessage(InboxMessage message)
|
|
{
|
|
var request = JsonConvert.DeserializeObject<TResponse>(message.Payload);
|
|
return request;
|
|
}
|
|
}
|
|
} |