# frozen_string_literal: true require 'json' require 'triviacrack/api/common' require 'triviacrack/parsers/game_parser' # Public: All methods in this module make requests to the Trivia Crack games # API. module TriviaCrack module API module Game include TriviaCrack::API::Common # Public: Uses the Trivia Crack API to fetch the list of games for the # current user. # # Examples # # get_games # # Returns a list of TriviaCrack::Game. # Raises TriviaCrack:Errors::RequestError if the request fails. def get_games # rubocop:disable Naming/AccessorMethodName response = get "/api/users/#{@session.user_id}/dashboard" games_data = response['list'] games = [] games_data&.each do |game_data| game = TriviaCrack::Parsers::GameParser.parse game_data games << game end games end # Public: Uses the Trivia Crack API to fetch the information for the given # game. # # game_id - The id of a Trivia Crack game. # # Examples # # get_game 123 # # Returns the TriviaCrack::Game for the given game_id. # Raises TriviaCrack:Errors::RequestError if the request fails. def get_game(game_id) response = get "/api/users/#{@session.user_id}/games/#{game_id}" TriviaCrack::Parsers::GameParser.parse response end # Public: Uses the Trivia Crack API to start a new game for the current # user. # # Examples # # client.start_new_game # # Returns the TriviaCrack::Game that was started. # Raises TriviaCrack::Errors::RequestError if the request fails def start_new_game response = post "/api/users/#{@session.user_id}/games", parameters: { language: 'EN' }.to_json TriviaCrack::Parsers::GameParser.parse response end end end end