private async Task <OperationResponse <T> > ExecuteOperation <T>(IVirtualStudioOperation <T> operation) { OperationResponse <T> response = new OperationResponse <T>(); if (virtualStudios.TryGetVirtualStudio(connectionIdToGroupMapping[Context.ConnectionId], out Core.VirtualStudio virtualStudio)) { response.Data = await operation.Process(virtualStudio); if (operation.Error is null) { response.Status = OperationStatus.Success; } else { response.Status = OperationStatus.Error; response.Error = operation.Error; } } else { response.Status = OperationStatus.Error; response.Error = new OperationError(ErrorType.NotAuthorized, "The user did not join a VirtualStudio."); } if (response.Status == OperationStatus.Error) { logger.LogWarning($"{operation}: Error: {response.Error.Type}, {response.Error.Message}"); } else { logger.LogInformation($"{operation}: OK"); } return(response); }
private async Task <OperationResponse> ExecuteOperation(IVirtualStudioOperation <bool> operation) { return((await ExecuteOperation <bool>(operation)).WithoutData()); }