in src/Microsoft.Azure.WebJobs.Host/Bindings/ConverterManager.cs [33:110]
public ConverterManager()
{
this.AddExactConverter<byte[], string>(DefaultByteArrayToString);
this.AddExactConverter<IEnumerable<JObject>, JArray>((enumerable) => JArray.FromObject(enumerable));
this.AddExactConverter<ApplyConversion<string, Stream>, object>(async (pair, cancellationToken) =>
{
var text = pair.Value;
var stream = pair.Existing;
// Specifically use the same semantics as binding to 'TextWriter'
using (var writer = new StreamWriter(stream))
{
cancellationToken.ThrowIfCancellationRequested();
await writer.WriteAsync(text);
}
return null;
});
this.AddExactConverter<ApplyConversion<byte[], Stream>, object>(async (pair, cancellationToken) =>
{
var bytes = pair.Value;
var stream = pair.Existing;
await stream.WriteAsync(bytes, 0, bytes.Length);
return null;
});
this.AddExactConverter<Stream, string>(async (stream, cancellationToken) =>
{
using (var sr = new StreamReader(stream))
{
return await sr.ReadToEndAsync();
}
});
this.AddExactConverter<Stream, byte[]>(async (stream, cancellatinToken) =>
{
using (MemoryStream outputStream = new MemoryStream())
{
const int DefaultBufferSize = 4096;
await stream.CopyToAsync(outputStream, DefaultBufferSize);
byte[] value = outputStream.ToArray();
return value;
}
});
this.AddExactConverter<Stream, TextReader>(stream =>
{
return new StreamReader(stream);
});
this.AddExactConverter<Stream, TextWriter>(stream =>
{
// Default is UTF8, not write a BOM, close stream when done.
return new StreamWriter(stream);
});
this.AddExactConverter<Stream, BinaryData>(async (stream, cancellationToken) =>
{
return await BinaryData.FromStreamAsync(stream, cancellationToken);
});
this.AddExactConverter<ApplyConversion<BinaryData, Stream>, object>(async (pair, cancellationToken) =>
{
var data = pair.Value;
var stream = pair.Existing;
await data.ToStream().CopyToAsync(stream);
return null;
});
this.AddExactConverter<byte[], BinaryData>((bytes) =>
{
return BinaryData.FromBytes(bytes);
});
this.AddExactConverter<BinaryData, byte[]>((binaryData) =>
{
return binaryData.ToArray();
});
}