From e2958817c79f29722fedc1ea8ddcedea894a0f20 Mon Sep 17 00:00:00 2001 From: transtrike Date: Mon, 21 Dec 2020 22:15:18 +0200 Subject: Exception handling added --- src/DevHive.Web/Controllers/ErrorController.cs | 43 +++++++++++++++++++++----- src/DevHive.code-workspace | 3 +- 2 files changed, 38 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/DevHive.Web/Controllers/ErrorController.cs b/src/DevHive.Web/Controllers/ErrorController.cs index 19fbb21..67a83fe 100644 --- a/src/DevHive.Web/Controllers/ErrorController.cs +++ b/src/DevHive.Web/Controllers/ErrorController.cs @@ -1,17 +1,46 @@ using System; -using System.Net.Http; +using System.Diagnostics; +using Microsoft.AspNetCore.Diagnostics; +using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; namespace DevHive.Web.Controllers { - [ApiController] - [Route("/api/[controller]")] - public class ErrorController + public class ErrorController : ControllerBase { - [HttpGet] - public IActionResult Error(Exception exception) + [HttpPost] + [Route("/api/Error")] + public IActionResult Error() { - return new BadRequestObjectResult(exception); + //Later for logging + string requestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier; + + IExceptionHandlerFeature exception = + HttpContext.Features.Get(); + + object result = ProcessException(requestId, exception); + return new BadRequestObjectResult(JsonConvert.SerializeObject(result)); + } + + private object ProcessException(string requestId, IExceptionHandlerFeature exception) + { + switch (exception.Error) + { + case ArgumentException _: + case InvalidOperationException _: + return MessageToObject(exception.Error.Message); + default: + return MessageToObject(null); + } + } + + private object MessageToObject(string message) + { + return new + { + Error = message + }; } } } diff --git a/src/DevHive.code-workspace b/src/DevHive.code-workspace index b93bfbc..9ee0259 100644 --- a/src/DevHive.code-workspace +++ b/src/DevHive.code-workspace @@ -29,6 +29,7 @@ "**/obj": true, ".gitignore" : true, }, - "code-runner.fileDirectoryAsCwd": true + "code-runner.fileDirectoryAsCwd": true, + "compile-hero.disable-compile-files-on-did-save-code": true } } -- cgit v1.2.3