static async Task <string> LoadAttachment(IDataBus dataBus, string id) { using (var destination = new MemoryStream()) { using (var source = await dataBus.OpenRead(id)) { await source.CopyToAsync(destination); } return(Encoding.UTF8.GetString(destination.ToArray())); } }
/// <summary> /// Hydrates the message, if it was dehydrated /// </summary> public async Task Process(IncomingStepContext context, Func <Task> next) { var transportMessage = context.Load <TransportMessage>(); if (transportMessage.Headers.TryGetValue(Headers.MessagePayloadAttachmentId, out var attachmentId)) { using (var destination = new MemoryStream()) { using (var source = await _dataBus.OpenRead(attachmentId)) { await source.CopyToAsync(destination); } var body = destination.ToArray(); var headers = transportMessage.Headers.Clone(); headers.Remove(Headers.MessagePayloadAttachmentId); context.Save(new TransportMessage(headers, body)); } } await next(); }