2021-03-14 11:10:31 +00:00
|
|
|
using System;
|
2021-01-25 14:53:49 +00:00
|
|
|
using System.Text;
|
|
|
|
|
using Elsa.Activities.AzureServiceBus.Models;
|
|
|
|
|
using Elsa.Serialization;
|
2021-03-14 11:10:31 +00:00
|
|
|
using Microsoft.Azure.ServiceBus;
|
2021-01-25 14:53:49 +00:00
|
|
|
|
|
|
|
|
namespace Elsa.Activities.AzureServiceBus.Extensions
|
|
|
|
|
{
|
|
|
|
|
public static class MessageBodyExtensions
|
|
|
|
|
{
|
|
|
|
|
public static T ReadBody<T>(this MessageModel message, IContentSerializer serializer) => (T) message.ReadBody(typeof(T), serializer);
|
|
|
|
|
|
|
|
|
|
public static object ReadBody(this MessageModel message, Type type, IContentSerializer serializer)
|
|
|
|
|
{
|
2021-03-14 11:10:31 +00:00
|
|
|
if (type == typeof(string))
|
2021-04-03 19:07:18 +00:00
|
|
|
return Encoding.UTF8.GetString(message.Body);
|
2021-03-14 11:10:31 +00:00
|
|
|
|
2021-01-25 14:53:49 +00:00
|
|
|
var bytes = message.Body;
|
|
|
|
|
var json = Encoding.UTF8.GetString(bytes);
|
|
|
|
|
return serializer.Deserialize(json, type)!;
|
|
|
|
|
}
|
2021-03-14 11:10:31 +00:00
|
|
|
|
2021-04-03 19:07:18 +00:00
|
|
|
public static Message CreateMessage(IContentSerializer serializer, object message)
|
2021-03-14 11:10:31 +00:00
|
|
|
{
|
|
|
|
|
byte[] messageBytes;
|
|
|
|
|
|
2021-06-03 19:24:49 +00:00
|
|
|
if (message is string s)
|
2021-04-03 19:07:18 +00:00
|
|
|
messageBytes = Encoding.UTF8.GetBytes(s);
|
2021-03-14 11:10:31 +00:00
|
|
|
else
|
|
|
|
|
{
|
2021-04-03 19:07:18 +00:00
|
|
|
var json = serializer.Serialize(message);
|
2021-03-14 11:10:31 +00:00
|
|
|
messageBytes = Encoding.UTF8.GetBytes(json);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return new Message(messageBytes);
|
|
|
|
|
}
|
2021-01-25 14:53:49 +00:00
|
|
|
}
|
|
|
|
|
}
|