lib/triviacrack/parsers/game_parser.rb in triviacrack-0.6.0 vs lib/triviacrack/parsers/game_parser.rb in triviacrack-0.7.0

- old
+ new

@@ -1,17 +1,18 @@ -require "triviacrack/game" -require "triviacrack/parsers/game_statistics_parser" -require "triviacrack/parsers/question_parser" -require "triviacrack/parsers/time_parser" -require "triviacrack/parsers/user_parser" +# frozen_string_literal: true +require 'triviacrack/game' +require 'triviacrack/parsers/game_statistics_parser' +require 'triviacrack/parsers/question_parser' +require 'triviacrack/parsers/time_parser' +require 'triviacrack/parsers/user_parser' + # Internal: This module is used to parse data returned from the Trivia Crack API # into a ruby object that represents a Trivia Crack game. module TriviaCrack module Parsers module GameParser - # Internal: Parses data returned from the Trivia Crack API to create a # TriviaCrack::Game object. # # raw_data - A hash of the raw data returned by the Trivia Crack API. # @@ -20,61 +21,60 @@ # raw_data = get_raw_data_from_API # ... # game = TriviaCrack::Parsers::GameParser.parse raw_data # # Returns a TriviaCrack::Game. - def self.parse(raw_data) + def self.parse(raw_data) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity questions = [] - if raw_data["spins_data"] - raw_data["spins_data"]["spins"][0]["questions"].each do |q_data| - q_data = q_data["question"] - q_data["type"] = raw_data["spins_data"]["spins"][0]["type"] + if raw_data['spins_data'] + raw_data['spins_data']['spins'][0]['questions'].each do |q_data| + q_data = q_data['question'] + q_data['type'] = raw_data['spins_data']['spins'][0]['type'] question = TriviaCrack::Parsers::QuestionParser.parse q_data questions << question end - if raw_data["spins_data"]["spins"][0]["type"] == "DUEL" - q_data = raw_data["spins_data"]["spins"][0]["tie_break_question"] - q_data["type"] = raw_data["spins_data"]["spins"][0]["type"] + if raw_data['spins_data']['spins'][0]['type'] == 'DUEL' + q_data = raw_data['spins_data']['spins'][0]['tie_break_question'] + q_data['type'] = raw_data['spins_data']['spins'][0]['type'] question = TriviaCrack::Parsers::QuestionParser.parse q_data questions << question end end - if raw_data["available_crowns"] - crowns = raw_data["available_crowns"].map { |c| c.downcase.to_sym } - else - crowns = [] - end + crowns = if raw_data['available_crowns'] + raw_data['available_crowns'].map { |c| c.downcase.to_sym } + else + [] + end - me = raw_data["my_player_number"] == 1 ? "player_one" : "player_two" - them = raw_data["my_player_number"] == 1 ? "player_two" : "player_one" + me = raw_data['my_player_number'] == 1 ? 'player_one' : 'player_two' + them = raw_data['my_player_number'] == 1 ? 'player_two' : 'player_one' - my_statistics = raw_data["statistics"]["#{me}_statistics"] - my_statistics["crowns"] = raw_data[me]["crowns"] + my_statistics = raw_data['statistics']["#{me}_statistics"] + my_statistics['crowns'] = raw_data[me]['crowns'] - opponent_statistics = raw_data["statistics"]["#{them}_statistics"] - opponent_statistics["crowns"] = raw_data[them]["crowns"] + opponent_statistics = raw_data['statistics']["#{them}_statistics"] + opponent_statistics['crowns'] = raw_data[them]['crowns'] TriviaCrack::Game.new( - id: raw_data["id"], - opponent: UserParser.parse(raw_data["opponent"]), - game_status: raw_data["game_status"].downcase.to_sym, - language: raw_data["language"].downcase.to_sym, - created: TimeParser.parse(raw_data["created"]), - last_turn: TimeParser.parse(raw_data["last_turn"]), - type: raw_data["type"].downcase.to_sym, - expiration_date: TimeParser.parse(raw_data["expiration_date"]), - my_turn: raw_data["my_turn"], - round_number: raw_data["round_number"], - is_random: raw_data["is_random"], - unread_messages: raw_data["unread_messages"], - status_version: raw_data["status_version"], + id: raw_data['id'], + opponent: UserParser.parse(raw_data['opponent']), + game_status: raw_data['game_status'].downcase.to_sym, + language: raw_data['language'].downcase.to_sym, + created: TimeParser.parse(raw_data['created']), + last_turn: TimeParser.parse(raw_data['last_turn']), + type: raw_data['type'].downcase.to_sym, + expiration_date: TimeParser.parse(raw_data['expiration_date']), + my_turn: raw_data['my_turn'], + round_number: raw_data['round_number'], + is_random: raw_data['is_random'], + unread_messages: raw_data['unread_messages'], + status_version: raw_data['status_version'], available_crowns: crowns, questions: questions, my_statistics: GameStatisticsParser.parse(my_statistics), opponent_statistics: GameStatisticsParser.parse(opponent_statistics) ) end - end end end