public async Task MakeNewQuiz(string username, string quizId, QuizOptions quizOptions) { var player = new Player { ConnectionId = Context.ConnectionId, Username = username }; if (QuizState.IsUsernameTaken(quizId, username).GetValueOrDefault()) { await Clients.Caller.SendAsync("UsernameTaken"); } var quiz = new Models.Quiz { Id = quizId, Players = new List <Player>() { player }, }; quiz.Players.Add(player); QuizState.GetWaitingPlayers(quizId).ForEach(player => { quiz.Players.Add(player); }); await Clients.Group(quizId).SendAsync("NewQuiz"); QuizState.AddQuiz(quiz); }
public async Task <Models.Quiz> GetQuizAsync(QuizOptions options) { var uri = $"https://opentdb.com/api.php?amount={options.NumQuestions}&category={options.Category.Item1}&difficulty={options.Difficulty}&type=multiple"; var questions = await GetQuestionsFromApi(uri); return(new Models.Quiz { Questions = questions }); }