Sha256: dfbb497a486a89c1c838a432fc98078f806756291ba0db581dc158c92bc3df12

Contents?: true

Size: 1.92 KB

Versions: 2

Compression:

Stored size: 1.92 KB

Contents

# 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

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
triviacrack-0.8.0 lib/triviacrack/api/game.rb
triviacrack-0.7.0 lib/triviacrack/api/game.rb