public async Task<string> Put(Stream stream, TimeSpan timeToBeReceived)
{
var key = GenerateKey(timeToBeReceived);
var filePath = Path.Combine(basePath, key);
Directory.CreateDirectory(Path.GetDirectoryName(filePath));
using (var output = new FileStream(filePath, FileMode.CreateNew, FileAccess.Write, FileShare.Read, 4096, FileOptions.Asynchronous))
{
const int bufferSize = 32*1024;
await stream.CopyToAsync(output, bufferSize).ConfigureAwait(false);
}
logger.DebugFormat("Saved stream to '{0}'.", filePath);
return key;
}