Esempio n. 1
0
        protected ErrorTranslation CreateTranslation(HttpRequestMessage request, HttpStatusCode statusCode, Exception exception)
        {
            Error     error     = new Error();
            Exception rootCause = exception.GetBaseException();

            error.Problems.Add(new Error.Problem {
                Code = rootCause.GetType().Name, Message = MakeJsonSafe(rootCause.Message)
            });
            HttpResponseMessage response = new HttpResponseMessage(statusCode)
            {
                Content = new StringContent(DefaultProtocol.Serializer.Serialize(error), Encoding.UTF8, "application/json")
            };
            ErrorTranslation translation = new ErrorTranslation(error, response);

            return(translation);
        }
Esempio n. 2
0
        public ErrorTranslation Translate(Exception exception, HttpRequestMessage request)
        {
            ErrorTranslation translation = this.InternalTranslate(exception, request);

            if (translation == null)
            {
                if (this.InnerTranslator != null)
                {
                    translation = this.InnerTranslator.Translate(exception, request);
                }
            }
            if (translation == null)
            {
                translation = this.CreateTranslation(request, HttpStatusCode.InternalServerError, exception);
            }
            return(translation);
        }
Esempio n. 3
0
 protected override ErrorTranslation InternalTranslate(Exception exception, HttpRequestMessage request)
 {
     if (exception is OperationNotAllowedException)
     {
         return(this.CreateTranslation(request, HttpStatusCode.BadRequest, exception));
     }
     if (exception is ObjectNotFoundException)
     {
         return(this.CreateTranslation(request, HttpStatusCode.NotFound, exception));
     }
     if (exception is ValidationException)
     {
         ErrorTranslation translation = this.CreateTranslation(request, HttpStatusCode.NotAcceptable, exception);
         ((ValidationException)exception).Errors.ForEach(e => translation.Error.Problems.Add(new Error.Problem {
             Message = e
         }));
         return(translation);
     }
     return(null);
 }