public ActionResult HandleException(Exception exception, ControllerBase controller) { _logger.LogWarning(exception, "A generic Exception was thrown! Containing message: {ExceptionMessage}", exception.Message); var errorResponse = new ErrorResponseDto(_textService.Error_ServerError); var dataForClient = new DataForClient <IResponse>(errorResponse, new FixResponseDto[0]); return(controller.Ok(dataForClient)); }
public ActionResult HandleRequestException(RequestException exception, ControllerBase controller) { _logger.LogWarning(exception, "A Request Exception was thrown! Containing message: {ExceptionMessage}", exception.HumanMessage); var errorResponse = new ErrorResponseDto(exception.HumanMessage); var dataForClient = new DataForClient <IResponse>(errorResponse, exception.Fixes); return(controller.Ok(dataForClient)); }
// Transforms IRequest to RequestBase public async Task <DataForClient <IResponse> > Process(IRequest request, InputContext inputContext) { // Log the request LogRequest(_logger, request); // Set the language _languageService.SetLanguage(inputContext.Language); // Try to get info about the user var userInfo = _authenticationService.TryAuthenticate(inputContext.AccessToken); // Check if authentication needs to be fixed var fixes = new List <FixResponseDto>(); if (userInfo.Item1 == null && inputContext.AccessToken != null) { fixes.Add(new FixResponseDto(_textService.Error_IdentityValidationFailed, ErrorFix.Logout)); } // Check if the client uses the right version if (inputContext.AppVersion != ClientConstants.AppVersionString) { fixes.Add(new FixResponseDto(_textService.Error_RefreshBrowser, ErrorFix.WrongVersion)); throw new RequestException(_textService.Error_OldVersionOfAppUsed, fixes.ToArray()); } // Create request context var requestContext = new RequestContext(userInfo.Item1, userInfo.Item2, inputContext.RequestId, inputContext.Language, inputContext.IpAddress); // Get the server action IServerAction action = _serverActionResolver.Resolve(request); // Execute the server action var response = await action.ExecuteActionAsync(request, requestContext); // Wrap the response var dataForClient = new DataForClient <IResponse>(response, fixes.ToArray()); return(dataForClient); }