Ejemplo n.º 1
0
        public async Task <IActionResult> Upload([ModelBinder(typeof(RequestKeyBinder))] RequestKey Key, SendData Sender)
        {
            if (GetValidateResult() is IActionResult ErrorResult)
            {
                return(ErrorResult);
            }
            var Token = HttpContext.RequestAborted;

            try
            {
                var Path   = HttpContext.Request.Path + HttpContext.Request.QueryString;
                var Result = new PipelineStreamResult();
                var Send   = await Store.GetSenderAsync(Key, Token);

                await Send.ConnectionAsync(Sender.GetResultAsync(), Result, Token);

                return(Result);
            }
            catch (OperationCanceledException e)
            {
                if (Token.IsCancellationRequested)
                {
                    Logger.LogInformation(e.Message);
                    return(BadRequest(string.Format(CancelMessage, e.Message)));
                }
                Logger.LogInformation(ConnectionTimeout);
                return(BadRequest(string.Format(TimeoutMessage, ConnectionTimeout)));
            }
            catch (InvalidOperationException e)
            {
                Logger.LogError(e, UploadFail);
                return(BadRequest(string.Format(ErrorMessage, e.Message)));
            }
        }