Esempio n. 1
0
        /// <summary>
        /// Response for missing/Invalid headers.
        /// </summary>
        /// <param name="ignoreMissingAuth">Whether or not errors due to missing <see cref="HeaderNames.Authorization"/> should be thrown.</param>
        /// <returns>The appropriate <see cref="IActionResult"/>.</returns>
        protected IActionResult HeadersIssue(bool ignoreMissingAuth)
        {
            HeadersException headersException;

            try
            {
                var _ = new ApiHeaders(Request.GetTypedHeaders(), ignoreMissingAuth);
                throw new InvalidOperationException("Expected a header parse exception!");
            }
            catch (HeadersException ex)
            {
                headersException = ex;
            }

            var errorMessage = new ErrorMessageResponse(ErrorCode.BadHeaders)
            {
                AdditionalData = headersException.Message
            };

            if (headersException.MissingOrMalformedHeaders.HasFlag(HeaderTypes.Accept))
            {
                return(StatusCode(HttpStatusCode.NotAcceptable, errorMessage));
            }

            return(BadRequest(errorMessage));
        }
Esempio n. 2
0
        public void OnException(ExceptionContext context)
        {
            logger.LogError(new EventId(context.Exception.HResult), context.Exception, context.Exception.Message);

            if (context.Exception is CartException)
            {
                var errorResponse = new ErrorMessageResponse
                {
                    Message    = context.Exception.Message,
                    StatusCode = (int)HttpStatusCode.BadRequest
                };

                context.Result = new BadRequestObjectResult(errorResponse);
                context.HttpContext.Response.StatusCode = errorResponse.StatusCode;
            }
            else
            {
                var errorResponse = new ErrorMessageResponse
                {
                    Message = "An unexpected error has occured.  Please try again later.",
                };

                if (env.IsDevelopment())
                {
                    errorResponse.Exception = context.Exception;
                }

                errorResponse.StatusCode = (int)HttpStatusCode.InternalServerError;

                context.Result = new ObjectResult(errorResponse);
                context.HttpContext.Response.StatusCode = errorResponse.StatusCode;
            }

            context.ExceptionHandled = true;
        }
        private static Task HandleInternalExceptionAsync(HttpContext context, Exception ex)
        {
            var error = new ErrorMessageResponse
            {
                Error  = ex.Message,
                Status = HttpStatusCode.InternalServerError
            };

            var result = JsonConvert.SerializeObject(error);

            context.Response.ContentType = "application/json";
            context.Response.StatusCode  = (int)error.Status;
            return(context.Response.WriteAsync(result));
        }
Esempio n. 4
0
        public async Task Invoke(HttpContext context)
        {
            ErrorMessageResponse errorMessageResponse = null;

            try
            {
                string authHeader = context.Request.Headers["Authorization"];

                var apiKey = authSettings.Value.ApiKey;

                if (authHeader != null && apiKey != null && authHeader.Equals(apiKey))
                {
                    await next.Invoke(context);
                }
                else
                {
                    context.Response.StatusCode = 401;
                    throw new UnauthorizedAccessException();
                }
            }
            catch (Exception ex)
            {
                logger.LogError(new EventId(ex.HResult), ex, ex.Message);

                errorMessageResponse = new ErrorMessageResponse
                {
                    Message    = ex.Message,
                    Exception  = ex,
                    StatusCode = 401
                };

                context.Response.StatusCode = 401;
            }

            if (!context.Response.HasStarted)
            {
                context.Response.ContentType = "application/json";

                var response = JsonConvert.SerializeObject(errorMessageResponse, new JsonSerializerSettings
                {
                    ContractResolver = new CamelCasePropertyNamesContractResolver()
                });

                await context.Response.WriteAsync(response);
            }
        }
        /// <inheritdoc />
        public void SetErrorMessage(ErrorMessageResponse errorMessage)
        {
            if (errorMessage == null)
#pragma warning disable IDE0016 // Use 'throw' expression
            {
                throw new ArgumentNullException(nameof(errorMessage));
            }
#pragma warning restore IDE0016 // Use 'throw' expression

            if (this.errorMessage != null)
            {
                throw new InvalidOperationException("ErrorMessage already set!");
            }

            this.errorMessage = errorMessage;
            completionTcs.TrySetResult(null);
        }
Esempio n. 6
0
        public async Task <IActionResult> UploadFile(IFormFile file)
        {
            string extension = "." + file.FileName.Split(".")[file.FileName.Split(".").Length - 1];

            if (extension != ".csv" && extension != ".xml")
            {
                ErrorMessageResponse response = new ErrorMessageResponse();
                response.StatusCode = "Error";
                response.Message    = "Unknown format";

                return(NotFound(response));
            }

            List <FileModel> files = extension == ".csv" ? readCSVfile(file) : readXMLfile(file);

            if (!_ValidateData(files, extension))
            {
                return(BadRequest(_invalidtrasactionResponse));
            }
            else
            {
                bool result = await CreateTransaction(files, extension);

                UploadResponse response = new UploadResponse();

                if (result)
                {
                    response.StatusCode = "200";
                    response.Message    = "Upload Success";
                    return(Ok(response));
                }
                else
                {
                    response.StatusCode = "400";
                    response.Message    = "Upload Fail";
                    return(BadRequest(response));
                }
            }
        }
Esempio n. 7
0
 internal void OnError(ErrorMessageResponse message)
 {
     Logger.Info("ErrorInfo message: " + message.Error);
     Error?.Invoke(this, new EventArgs<string>(message.Error));
 }
Esempio n. 8
0
        private static async void ProcessReceive(TcpTransport serverTransport, FrameData frameData,
                                                 IMessageProcessor messageProcessor)
        {
            ResponseBase response = null;

            if (frameData.TitleBytes == null || frameData.TitleBytes.Length == 0)
            {
                response = new ErrorMessageResponse((byte)ResponseCode.SERVICE_TITLE_ERROR, "service title is null or empty");
            }

            if (messageProcessor == null)
            {
                response = new ErrorMessageResponse((byte)ResponseCode.MESSAGE_PROCESSOR_EMPTY, "message processor is null");
            }

            try
            {
                if (response == null)
                {
                    if (NetworkSettings.ServerProcessMode == CommunicationMode.Sync)
                    {
                        var responseTask = messageProcessor.Process(frameData);
                        responseTask.Wait();
                        response = responseTask.Result;
                    }
                    else
                    {
                        response = await messageProcessor.Process(frameData);
                    }
                }
            }
            catch
            {
                response = new ErrorMessageResponse((byte)ResponseCode.SERVER_INTERNAL_ERROR, "server internal error");
            }

            var responseExtention = response.HeaderExtentionBytes ?? FrameFormat.EmptyBytes;
            var responseContent   = response.ContentBytes ?? FrameFormat.EmptyBytes;
            var responseCode      = response.Code;

            try
            {
                var messageByteCount = FrameFormat.ComputeFrameByteCount(responseExtention, FrameFormat.EmptyBytes, responseContent);
                var sendBuffer       = serverTransport.SendBufferCache.Get(messageByteCount);

                FrameFormat.FillFrame(sendBuffer, responseExtention, FrameFormat.EmptyBytes, responseContent, responseCode, frameData.MessageId);

                //if (NetworkSettings.ServerTcpSendMode == TcpSendMode.Async)
                //{
                //    serverTransport.SendAsync(sendBuffer, messageByteCount);
                //}
                //else
                //{
                serverTransport.Send(sendBuffer, messageByteCount);
                //}

                serverTransport.SendBufferCache.Cache(sendBuffer);
            }
            catch
            {
                serverTransport.Close();
            }
        }