private void ListenerCallback(IAsyncResult result) { if (_listener?.IsListening ?? false) { // Call EndGetContext to complete the asynchronous operation... var context = _listener.EndGetContext(result); // Obtain a response object. using var response = context.Response; try { // Construct a response. if (context.Request.Url?.Segments.Length > 1) { // segments: "/" ... var segment = context.Request.Url.Segments[1].TrimEnd('/').ToLower(); if (_listener.IsListening) { switch (segment) { case "data": HandleRequestForClockWebPageTimerData(context.Request, response); break; case "index": HandleRequestForClockWebPage(context.Request, response); break; case "timers": HandleRequestForTimersWebPage(context.Request, response); break; case "api": HandleApiRequest(context.Request, response); break; default: break; } } } } catch (WebServerException ex) { Log.Logger.Error(ex, "Web server error"); response.StatusCode = (int)WebServerErrorCodes.GetHttpErrorCode(ex.Code); BaseApiController.WriteResponse(response, new ApiError(ex.Code)); } catch (Exception ex) { Log.Logger.Error(ex, "Web server error"); response.StatusCode = (int)WebServerErrorCodes.GetHttpErrorCode(WebServerErrorCode.UnknownError); BaseApiController.WriteResponse(response, new ApiError(WebServerErrorCode.UnknownError)); } } }
public ApiError(WebServerErrorCode code) { ErrorCode = (int)code; ErrorMessage = WebServerErrorCodes.GetDescription(code); }