From 2cc2bae70e86ff18d05a3579407b08e305b9053d Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Sun, 18 Nov 2018 12:49:31 +0200 Subject: Working on web services... --- .../Web/Tango.MachineService/ProtoController.cs | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 Software/Visual_Studio/Web/Tango.MachineService/ProtoController.cs (limited to 'Software/Visual_Studio/Web/Tango.MachineService/ProtoController.cs') diff --git a/Software/Visual_Studio/Web/Tango.MachineService/ProtoController.cs b/Software/Visual_Studio/Web/Tango.MachineService/ProtoController.cs new file mode 100644 index 000000000..572604d3c --- /dev/null +++ b/Software/Visual_Studio/Web/Tango.MachineService/ProtoController.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Security.Authentication; +using System.Threading; +using System.Threading.Tasks; +using System.Web; +using System.Web.Http; +using System.Web.Http.Controllers; +using Tango.Logging; + +namespace Tango.MachineService +{ + public class ProtoController : ApiController + { + protected LogManager LogManager { get; private set; } + + public ProtoController() + { + LogManager = LogManager.Default; + } + + public override async Task ExecuteAsync(HttpControllerContext context, CancellationToken cancellationToken) + { + string controllerName = String.Empty; + string actionName = String.Empty; + + try + { + var routeData = HttpContext.Current.Request.RequestContext.RouteData; + actionName = routeData.Values["action"].ToString(); + controllerName = routeData.Values["controller"].ToString(); + } + catch { } + + try + { + LogManager.Log($"Request Received on {controllerName + "/" + actionName}."); + + var result = await base.ExecuteAsync(context, cancellationToken); + return result; + } + catch (Exception ex) + { + LogManager.Log(ex, $"An error occurred while processing the request message on {controllerName + "/" + actionName}."); + + HttpStatusCode code = HttpStatusCode.InternalServerError; + + if (ex is ArgumentException) + { + code = HttpStatusCode.BadRequest; + } + else if (ex is AuthenticationException) + { + code = HttpStatusCode.Unauthorized; + } + + throw new HttpResponseException(Request.CreateErrorResponse(code, ex.Message)); + } + } + } +} \ No newline at end of file -- cgit v1.3.1