Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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
            });
        }