Ejemplo n.º 1
0
        public override void OnActionExecuted(ActionExecutedContext actionExecutedContext)
        {
            if (actionExecutedContext.Exception != null && !actionExecutedContext.ExceptionHandled)
            {
                var error = new KeyValuePair <string, List <string> >("internal_server_error", new List <string>()
                {
                    "please, contact the store owner"
                });

                actionExecutedContext.Exception        = null;
                actionExecutedContext.ExceptionHandled = true;
                SetError(actionExecutedContext, error);
            }
            else if (actionExecutedContext.HttpContext.Response != null &&
                     (HttpStatusCode)actionExecutedContext.HttpContext.Response.StatusCode != HttpStatusCode.OK)
            {
                string responseBody = string.Empty;

                using (var streamReader = new StreamReader(actionExecutedContext.HttpContext.Response.Body))
                {
                    responseBody = streamReader.ReadToEnd();
                }

                // reset reader possition.
                actionExecutedContext.HttpContext.Response.Body.Position = 0;

                DefaultWeApiErrorsModel defaultWebApiErrorsModel = JsonConvert.DeserializeObject <DefaultWeApiErrorsModel>(responseBody);

                // If both are null this means that it is not the default web api error format,
                // which means that it the error is formatted by our standard and we don't need to do anything.
                if (!string.IsNullOrEmpty(defaultWebApiErrorsModel.Message) &&
                    !string.IsNullOrEmpty(defaultWebApiErrorsModel.MessageDetail))
                {
                    var error = new KeyValuePair <string, List <string> >("lookup_error", new List <string>()
                    {
                        "not found"
                    });

                    SetError(actionExecutedContext, error);
                }
            }

            base.OnActionExecuted(actionExecutedContext);
        }
Ejemplo n.º 2
0
        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
        {
            if (actionExecutedContext.Response != null && actionExecutedContext.Response.StatusCode != HttpStatusCode.OK)
            {
                var content = actionExecutedContext.Response.Content.ReadAsStringAsync().Result;

                DefaultWeApiErrorsModel defaultWebApiErrorsModel = JsonConvert.DeserializeObject <DefaultWeApiErrorsModel>(content);

                // If both are null this means that it is not the default web api error format,
                // which means that it the error is formatted by our standard and we don't need to do anything.
                if (!string.IsNullOrEmpty(defaultWebApiErrorsModel.Message) &&
                    !string.IsNullOrEmpty(defaultWebApiErrorsModel.MessageDetail))
                {
                    Dictionary <string, List <string> > bindingError = new Dictionary <string, List <string> >()
                    {
                        {
                            "lookup_error",
                            new List <string>()
                            {
                                "not found"
                            }
                        }
                    };

                    var errorsRootObject = new ErrorsRootObject()
                    {
                        Errors = bindingError
                    };

                    var errorJson = _jsonFieldsSerializer.Serialize(errorsRootObject, null);

                    actionExecutedContext.Response = actionExecutedContext.Request.CreateResponse(
                        HttpStatusCode.BadRequest, errorJson);
                }
            }

            base.OnActionExecuted(actionExecutedContext);
        }