Exemplo n.º 1
0
        private static void ReturnError(Exception ex, HttpResponse response)
        {
            Log.Debug(ex, "Api Exception");

            try
            {
                JsonError jsonError = null;

                switch (ex)
                {
                case CommandException cex:
                    jsonError = ReturnCommandError(cex, response);
                    break;

                case NotImplementedException _:
                    response.StatusCode = (int)HttpStatusCode.NotImplemented;
                    break;

                case EntityTooLargeException _:
                    response.StatusCode = (int)HttpStatusCode.RequestEntityTooLarge;
                    break;

                default:
                    Log.Error(ex, "Unexpected command error");
                    response.StatusCode = (int)HttpStatusCode.InternalServerError;
                    break;
                }

                jsonError = jsonError ?? new JsonError(ex.Message, CommandExceptionReason.Unknown);
                using (var responseStream = new StreamWriter(response.Body))
                    responseStream.Write(jsonError.Serialize());
            }
            catch (Exception htex) { Log.Warn(htex, "Failed to respond to HTTP request."); }
        }