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(), }; } }
/// <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(), }; } }