public RequestProcessor(HttpListenerContext context, Dictionary<string, IRequestProcessor> processors,
     IRequestProcessor defaultProcessor, ICustomLogger logger)
 {
     _logger = logger;
     try
     {
         var result = HttpStatusCode.OK;
         result = !processors.ContainsKey(context.Request.Url.LocalPath.ToLower())
             ? defaultProcessor.Process(context, null)
             : processors[context.Request.Url.LocalPath.ToLower()].Process(context, _presenter);
         _logger.LogRequest(context.Request.HttpMethod, context.Request.Url.ToString(), result);
     }
     catch (MethodNotAllowedException ex)
     {
         var result = _presenter.FormatError(HttpStatusCode.MethodNotAllowed, ex.Message);
         var responseArray = Encoding.UTF8.GetBytes(result);
         context.Response.StatusCode = (int) HttpStatusCode.MethodNotAllowed;
         context.Response.ContentType = "text/html; charset=utf-8";
         context.Response.ContentLength64 = responseArray.Length;
         context.Response.OutputStream.Write(responseArray, 0, responseArray.Length);
         context.Response.OutputStream.Close();
         _logger.LogRequest(ex.RequestedMethod, ex.Query, HttpStatusCode.MethodNotAllowed);
     }
     catch (MissedParamsException ex)
     {
         var result = _presenter.FormatError(HttpStatusCode.Forbidden, ex.Message);
         var responseArray = Encoding.UTF8.GetBytes(result);
         context.Response.StatusCode = (int) HttpStatusCode.Forbidden;
         context.Response.ContentType = "text/html; charset=utf-8";
         context.Response.ContentLength64 = responseArray.Length;
         context.Response.OutputStream.Write(responseArray, 0, responseArray.Length);
         context.Response.OutputStream.Close();
         _logger.LogRequest(context.Request.HttpMethod, ex.Query, HttpStatusCode.Forbidden);
     }
     catch (ArgumentNullException ex)
     {
     }
     catch (Exception ex)
     {
         if (context != null)
         {
             context.Response.StatusCode = (int) HttpStatusCode.InternalServerError;
             context.Response.OutputStream.Close();
         }
     }
 }
Example #2
0
 public async Task Invoke(HttpContext context)
 {
     try
     {
         await _customlogger.LogRequest(context);
         await _next(context);
     }
     catch (Exception ex) when(ex.Source == System.Reflection.Assembly.GetExecutingAssembly().GetName().Name)
     {
         _logger.LogError($"ERROR - MiddlewareThird() - {ex.ToString()}");
         throw ex;
     }
 }