Exemple #1
0
        public void CanGenerateSensibleLabelEvenWhenSendingRawStringsOfArbitraryLengthAndFormatting(string crazyMessageThatMustBeHandled, string expectedLabel)
        {
            // arrange
            var message = new Message
                {
                    Messages = new object[] {crazyMessageThatMustBeHandled}
                };

            // act
            var label = message.GetLabel();

            // assert
            label.ShouldBe(expectedLabel);
        }
        public TransportMessageToSend Serialize(Message message)
        {
            using (new CultureContext(SerializationCulture))
            {
                var messageAsString = JsonConvert.SerializeObject(message.Messages, Formatting.Indented, Settings);

                return new TransportMessageToSend
                           {
                               Body = Encoding.GetBytes(messageAsString),
                               Headers = message.Headers.ToDictionary(k => k.Key, v => v.Value),
                               Label = message.GetLabel(),
                           };
            }
        }
        public TransportMessageToSend Serialize(Message message)
        {
            using (var memoryStream = new MemoryStream())
            {
                var formatter = new BinaryFormatter();
                formatter.Serialize(memoryStream, message);
                memoryStream.Position = 0;

                return new TransportMessageToSend
                           {
                               Label = message.GetLabel(),
                               Headers = message.Headers.ToDictionary(k => k.Key, v => v.Value),
                               Body = memoryStream.ToArray(),
                           };
            }
        }
        public TransportMessageToSend Serialize(Message message)
        {
            using (new CultureContext(SerializationCulture))
            {
                var messageAsString = JsonConvert.SerializeObject(message.Messages, Formatting.Indented, Settings);

                var headers = message.Headers.Clone();
                headers[Headers.ContentType] = "text/json";
                headers[Headers.Encoding] = Encoding.WebName;

                return new TransportMessageToSend
                           {
                               Body = Encoding.GetBytes(messageAsString),
                               Headers = headers,
                               Label = message.GetLabel(),
                           };
            }
        }
Exemple #5
0
        /// <summary>
        /// Serializes the transport message <see cref="Message"/> using JSON.NET and wraps it in a <see cref="TransportMessageToSend"/>
        /// </summary>
        public TransportMessageToSend Serialize(Message message)
        {
            using (new CultureContext(serializationCulture))
            {
                var messageAsString = JsonConvert.SerializeObject(message.Messages, Formatting.Indented, settings);
                var encodingToUse = customEncoding ?? DefaultEncoding;

                var headers = message.Headers.Clone();
                headers[Headers.ContentType] = JsonContentTypeName;
                headers[Headers.Encoding] = encodingToUse.WebName;

                return new TransportMessageToSend
                           {
                               Body = encodingToUse.GetBytes(messageAsString),
                               Headers = headers,
                               Label = message.GetLabel(),
                           };
            }
        }
        /// <summary>
        /// Serializes the transport message <see cref="Message"/> using JSON.NET and wraps it in a <see cref="TransportMessageToSend"/>
        /// </summary>
        public TransportMessageToSend Serialize(Message message)
        {
            using (new CultureContext(serializationCulture))
            {
                var encodingToUse = DefaultEncoding;

                var headers = new Dictionary<string, object>(message.Headers);

                // one line of JSON object per logical message
                var logicalMessageLines = string.Join(LineSeparator.ToString(), message.Messages.Select(m => JsonConvert.SerializeObject(m, Formatting.None, settings)));

                // include the types of the messages
                var messageTypes = string.Join(";", message.Messages.Select(m => GetMinimalAssemblyQualifiedName(m.GetType())));

                headers[Headers.MessageTypes] = messageTypes;
                headers[Headers.ContentType] = JsonContentTypeName;
                headers[Headers.Encoding] = encodingToUse.WebName;

                return new TransportMessageToSend
                           {
                               Body = encodingToUse.GetBytes(logicalMessageLines),
                               Headers = headers,
                               Label = message.GetLabel(),
                           };
            }
        }