/
vshmidt
/
masstransit
Обзор
Документация
Войти
/
vshmidt
/
masstransit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/MassTransit.Newtonsoft/Serialization/NewtonsoftEncryptedV2BodyMessageSerializer.cs
47 строк
1 KB
Chris Patterson
Integration of all external packages into MassTransit, split out into Abstractions, Middleware, and the core MassTransit assembly.
22 янв 2022, 18:24
22 янв 2022, 18:24
b5b4f50
Код
Авторство
О чём код?
namespace MassTransit.Serialization { using System.Net.Mime; using Newtonsoft.Json.Linq; /// <summary> /// Used to serialize an existing deserialized message when a message is forwarded, scheduled, etc. /// </summary> public class NewtonsoftEncryptedV2BodyMessageSerializer : IMessageSerializer { readonly JsonMessageEnvelope _envelope; readonly ICryptoStreamProviderV2 _provider; public NewtonsoftEncryptedV2BodyMessageSerializer(MessageEnvelope envelope, ContentType contentType, ICryptoStreamProviderV2 provider) { _provider = provider; _envelope = new JsonMessageEnvelope(envelope); ContentType = contentType; } public ContentType ContentType { get; } public MessageBody GetMessageBody<T>(SendContext<T> context) where T : class { _envelope.Update(context); var clearMessageBody = new NewtonsoftBsonMessageBody<T>(context, _envelope); return new EncryptMessageBodyV2<T>(_provider, context, clearMessageBody); } public void Overlay(object message) { if (_envelope.Message is JToken messageToken) { JToken overlayToken = JObject.FromObject(message, NewtonsoftJsonMessageSerializer.Serializer); _envelope.Message = messageToken.Merge(overlayToken); } else _envelope.Message = message; } } }