Module: TriviaCrack::API::Question

Includes:
Common
Included in:
Client
Defined in:
lib/triviacrack/api/question.rb

Instance Method Summary collapse

Methods included from Common

#get, #post

Instance Method Details

#answer_question(game_id, question, answer) ⇒ Object

Public: Uses the Trivia Crack API to answer the given question.

game_id - The ID of the TriviaCrack::Game. question - The TriviaCrack::Question. answer - The index of the answer to be submitted.

Examples

answer_question game.id, question, 1

Returns a boolean indicating whether or not the question was answered correctly, and the updated TriviaCrack::Game object. Raises TriviaCrack::Errors::RequestError if the request fails



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/triviacrack/api/question.rb', line 26

def answer_question(game_id, question, answer)
  response =
    post "/api/users/#{@session.user_id}/games/#{game_id}/answers",
          parameters: { type: question.type.upcase,
                        answers: [{
                          id: question.id,
                          answer: answer,
                          category: question.category.upcase
                          }]
                      }.to_json

  game = TriviaCrack::Parsers::GameParser.parse response

  [game, answer == question.correct_answer]
end

#answer_questions(game_id, questions, answer_map) ⇒ Object

Public: Uses the Trivia Crack API to answer duel questions for the game.

game_id - The ID of the TriviaCrack::Game. questions - The array of TriviaCrack::Question to answer answer_map - Hash of question ID / answer indices.

Examples

answers = {}
for question in game.questions do
  answers[question.id] = <some answer index> // 0, 1, 2 or 3
end
answer_questions game.id, game.questions, answers

Returns the update TriviaCrack::Game object, as well as a map with an entry for each question ID and a boolean indicating if the question was answered successfully. Raises TriviaCrack::Errors::RequestError if the request fails



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/triviacrack/api/question.rb', line 60

def answer_questions(game_id, questions, answer_map)
  answers = []
  correct_answers = {}

  for question in questions do
    answer = {
      id: question.id,
      answer: answer_map[question.id],
      category: question.category.upcase
    }
    answers << answer
    correct_answers[question.id] = answer_map[question.id] == question.correct_answer
  end

  response =
    post "/api/users/#{@session.user_id}/games/#{game_id}/answers",
          parameters: { type: questions.first.type.upcase, answers: answers }.to_json

  game = TriviaCrack::Parsers::GameParser.parse response

  [game, correct_answers]
end