public virtual async Task <IHttpActionResult> Download(Guid sourceId)
        {
            var fileSource = context.GetDataSource <FileDataSource>(sourceId);

            if (fileSource == null)
            {
                return(NotFound());
            }
            var memoryStream = await streamManager.RetrieveData(sourceId, fileSource.CurrentFileName);

            var contentLength = memoryStream.Length;

            MediaTypeHeaderValue mediaType;

            MediaTypeHeaderValue.TryParse(fileSource.MediaType, out mediaType);
            var contentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                FileName = fileSource.OriginalFileName,
                Size     = contentLength
            };
            var result = new FileActionResult(
                Request,
                memoryStream,
                mediaType,
                memoryStream.Length,
                contentDisposition);

            return(result);
        }