Example #1
0
        async Task IServer.DownloadFile(SrvDownloadRequest request, ITcpOp tcpOp)
        {
            _log.Info(request.TrackingId, request);

            validate(request);

            var user = await getUser(request);

            authenticate(user, request);

            var srcPath = makeFilePath(user, request.FileName);

            if (!File.Exists(srcPath))
            {
                throw new ApplicationException($"Can't find '{request.FileName}'");
            }

            var file = File.Open(srcPath, FileMode.Open, FileAccess.Read);

            var response = makeResponse <SrvDownloadResponse>(request);

            response.FileSize = file.Length;
            await tcpOp.Write(response);

            await tcpOp.WriteBytesFrom(file, file.Length);

            file.Close();

            _log.Info(request.TrackingId, response);
        }