Module: TriviaCrack::Parsers::GameParser
- Defined in:
- lib/triviacrack/parsers/game_parser.rb
Class Method Summary collapse
-
.parse(raw_data) ⇒ Object
Internal: Parses data returned from the Trivia Crack API to create a TriviaCrack::Game object.
Class Method Details
.parse(raw_data) ⇒ Object
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.
Examples
raw_data = get_raw_data_from_API
...
game = TriviaCrack::Parsers::GameParser.parse raw_data
Returns a TriviaCrack::Game.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/triviacrack/parsers/game_parser.rb', line 25 def self.parse(raw_data) 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"] 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 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"] 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"], available_crowns: crowns, questions: questions, my_statistics: GameStatisticsParser.parse(my_statistics), opponent_statistics: GameStatisticsParser.parse(opponent_statistics) ) end |