lib/triviacrack/api/question.rb in triviacrack-0.3.2 vs lib/triviacrack/api/question.rb in triviacrack-0.4.0
- old
+ new
@@ -9,11 +9,11 @@
include TriviaCrack::API::Common
# Public: Uses the Trivia Crack API to answer the given question.
#
- # game - The ID of the TriviaCrack::Game.
+ # game_id - The ID of the TriviaCrack::Game.
# question - The TriviaCrack::Question.
# answer - The index of the answer to be submitted.
#
# Examples
#
@@ -34,9 +34,50 @@
}.to_json
game = TriviaCrack::Parsers::GameParser.parse response.body
[game, answer == question.correct_answer]
+ end
+
+ # 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
+ 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.body
+
+ [game, correct_answers]
end
end
end
end