class Smite::DataTransform

Public Class Methods

transform_abilities(data) click to toggle source
# File lib/smite/data_transform.rb, line 21
def transform_abilities(data)
  ability_fields = data.slice(*ability_map_fields)
  return data if ability_fields.empty?

  data['abilities'] = ability_fields.values.each_with_index.map do |ability_data, idx|
    data_attrs = ability_data.slice('Id', 'Summary', 'URL')
    desc       = ability_data['Description']
    desc       = desc.nil? ? {} : desc['itemDescription']

    data_attrs['god']             = data['name']
    data_attrs['ability_number']  = idx + 1
    Ability.new(data_attrs.merge(desc))
  end

  data.except(*ability_filter_fields)
end
transform_gods(data) click to toggle source
# File lib/smite/data_transform.rb, line 13
def transform_gods(data)
  god_fields = data.slice(*god_map_fields)
  return data if god_fields.empty?

  data['god'] = god_fields.values.map { |id| Smite::Game.god(id) }[0]
  data.except(*god_filter_fields)
end
transform_items(data) click to toggle source
# File lib/smite/data_transform.rb, line 5
def transform_items(data)
  item_fields = data.slice(*item_map_fields)
  return data if item_fields.empty?

  data['items'] = item_fields.values.map { |id| Smite::Game.item(id) }
  data.except(*item_filter_fields)
end
transform_match_achievements(data) click to toggle source
# File lib/smite/data_transform.rb, line 61
def transform_match_achievements(data)
  ach_fields = data.slice(*match_achievement_map_fields)
  return data if ach_fields.empty?

  data['match_achievements'] = MatchAchievements.new(ach_fields)
  data.except(*match_achievement_filter_fields)
end
transform_match_summary(data) click to toggle source
# File lib/smite/data_transform.rb, line 38
def transform_match_summary(data)
  return data unless data['queue']

  if data['queue'] =~ /League/
    data
  else
    data.except(*match_summary_filter_fields)
  end
end
transform_stats(data) click to toggle source
# File lib/smite/data_transform.rb, line 48
def transform_stats(data)
  stat_fields = data.slice(*stats_map_fields)
  return data if stat_fields.empty?

  stat_fields['movement_speed'] = stat_fields.delete('speed')
  stat_fields['mp5']            = stat_fields.delete('mana_per_five')
  stat_fields['hp5']            = stat_fields.delete('health_per_five')
  stat_fields['physical_power'] = 0
  stat_fields['magical_power']  = 0
  data['stats'] = GodStats.new(data['name'], stat_fields)
  data.except(*stats_filter_fields)
end

Private Class Methods

ability_filter_fields() click to toggle source
# File lib/smite/data_transform.rb, line 116
def ability_filter_fields
  ability_map_fields + %w(
    ability1 ability2 ability3 ability4 ability5
    ability_id1 ability_id2 ability_id3 ability_id4 ability_id5
    ability_description1 ability_description2
    ability_description3 ability_description4
    ability_description5 god_ability1_url god_ability2_url
    god_ability3_url god_ability4_url god_ability5_url
  )
end
ability_map_fields() click to toggle source
# File lib/smite/data_transform.rb, line 112
def ability_map_fields
  %w( ability_1 ability_2 ability_3 ability_4 ability_5 )
end
god_filter_fields() click to toggle source
# File lib/smite/data_transform.rb, line 157
def god_filter_fields
  god_map_fields
end
god_map_fields() click to toggle source
# File lib/smite/data_transform.rb, line 153
def god_map_fields
  %w(god_id)
end
item_filter_fields() click to toggle source
# File lib/smite/data_transform.rb, line 102
def item_filter_fields
  item_map_fields + %w(
    item_1 item_2 item_3 item_4 item_5
    item_6 active_1 active_2 active_3
    item_active_1 item_active_2 item_active_3
    item_purch_1 item_purch_2 item_purch_3
    item_purch_4 item_purch_5 item_purch_6
  )
end
item_map_fields() click to toggle source
# File lib/smite/data_transform.rb, line 95
def item_map_fields
  %w(
    active_id1 active_id2 item_id1 item_id2
    item_id3 item_id4 item_id5 item_id6
  )
end
match_achievement_filter_fields() click to toggle source
# File lib/smite/data_transform.rb, line 91
def match_achievement_filter_fields
  match_achievement_map_fields - %w(player_name match)
end
match_achievement_map_fields() click to toggle source
# File lib/smite/data_transform.rb, line 71
def match_achievement_map_fields
  %w[
    kills_bot
    kills_double
    kills_fire_giant
    kills_first_blood
    kills_gold_fury
    kills_penta
    kills_phoenix
    kills_player
    kills_quadra
    kills_siege_juggernaut
    kills_single
    kills_triple
    kills_wild_juggernaut
    player_name
    match
  ]
end
match_summary_filter_fields() click to toggle source
# File lib/smite/data_transform.rb, line 127
def match_summary_filter_fields
  %w(
    ban1 ban2 ban3 ban4 ban5 ban6
    ban1_id ban2_id ban3_id
    ban4_id ban5_id ban6_id
  )
end
stats_filter_fields() click to toggle source
# File lib/smite/data_transform.rb, line 149
def stats_filter_fields
  stats_map_fields
end
stats_map_fields() click to toggle source
# File lib/smite/data_transform.rb, line 135
def stats_map_fields
  %w( 
    speed attack_speed attack_speed_per_level
    health health_per_level
    mana mana_per_level
    mana_per_five mp5_per_level
    health_per_five hp5_per_level
    magical_power magical_power_per_level
    physical_power physical_power_per_level
    magic_protection magic_protection_per_level
    physical_protection physical_protection_per_level
  )
end