Ejemplo n.º 1
0
        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));
                }
            }
        }
Ejemplo n.º 2
0
 public ApiError(WebServerErrorCode code)
 {
     ErrorCode    = (int)code;
     ErrorMessage = WebServerErrorCodes.GetDescription(code);
 }