/// <summary> /// Create and return exception response for client /// </summary> /// <param name="exception">Any exception</param> /// <returns></returns> public static NextApiResponse CreateNextApiExceptionResponse(Exception exception) { var message = exception.GetAllMessagesFromException(); string code; var parameters = new Dictionary <string, object>(); if (exception is NextApiException nextApiException) { code = nextApiException.Code; if (nextApiException.Parameters != null) { parameters = nextApiException.Parameters; } } else { code = NextApiErrorCode.Unknown.ToString(); } if (!parameters.ContainsKey("message")) { parameters.Add( "message", message); } var error = new NextApiError(code, parameters); return(new NextApiResponse(null, error, false)); }
/// <summary> /// Create and return error response for client /// </summary> /// <param name="code"></param> /// <param name="message"></param> /// <returns></returns> public static NextApiResponse CreateNextApiErrorResponse( NextApiErrorCode code, string message) { var error = new NextApiError(code.ToString(), new Dictionary <string, object> { { "message", message } }); return(new NextApiResponse(null, error, false)); }
/// <summary> /// Entry point of service calls /// </summary> /// <param name="command">Information about service call</param> /// <returns>Response from called service</returns> public async Task <dynamic> ExecuteCommand(NextApiCommand command) { // set current nextapi user _nextApiUserAccessor.User = Context.User; // set current request info _nextApiRequest.ClientContext = Context; _nextApiRequest.HubContext = _hubContext; var result = await _handler.ExecuteCommand(command); if (!(result is NextApiFileResponse)) { return(result); } var error = new NextApiError(NextApiErrorCode.OperationIsNotSupported.ToString(), new Dictionary <string, object>() { { "message", "File operations is not supported over SignalR, use HTTP" } }); return(new NextApiResponse(data: null, error: error, success: false)); }
/// <summary> /// Parse NextApiException from NextApiError /// </summary> /// <param name="error"></param> /// <returns></returns> public static NextApiException NextApiException(NextApiError error) { var message = error.Parameters["message"]; return(new NextApiException(error.Code, $"{error.Code} {message}", error.Parameters)); }