using Nancy; using Nancy.ErrorHandling; using Nancy.Responses; namespace Sony.Filtr.API.Nancy.Config { public class ErrorStatusCodeHandler : IStatusCodeHandler { public void Handle(HttpStatusCode statusCode, NancyContext context) { switch (statusCode) { case HttpStatusCode.NotFound: context.Response = new JsonResponse(new StatusMessage() { Message = "Resource not found."}, new DefaultJsonSerializer()).WithStatusCode(statusCode); break; case HttpStatusCode.InternalServerError: context.Response = new JsonResponse(new StatusMessage() { Message = "An internal error occurred." }, new DefaultJsonSerializer()).WithStatusCode(statusCode); break; case HttpStatusCode.BadRequest: context.Response = new JsonResponse(new StatusMessage() { Message = context.Response.ReasonPhrase ?? "Bad request" }, new DefaultJsonSerializer()).WithStatusCode(statusCode); break; case HttpStatusCode.Unauthorized: context.Response = new JsonResponse(new StatusMessage() { Message = "Unauthorized" }, new DefaultJsonSerializer()).WithStatusCode(statusCode); break; default: break; } } public bool HandlesStatusCode(HttpStatusCode statusCode, NancyContext context) { return (statusCode == HttpStatusCode.InternalServerError || statusCode == HttpStatusCode.NotFound || statusCode == HttpStatusCode.BadRequest || statusCode == HttpStatusCode.Unauthorized); } } public class StatusMessage { public string Message { get; set; } } }