Class: Smite::DataTransform

Inherits:
Object
  • Object
show all
Defined in:
lib/smite/data_transform.rb

Class Method Summary collapse

Class Method Details

.transform_abilities(data) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 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.map do |ability_data|
    data_attrs = ability_data.slice('Id', 'Summary', 'URL')
    desc       = ability_data['Description']
    desc       = desc.nil? ? {} : desc['itemDescription']

    Ability.new(data_attrs.merge(desc))
  end

  data.except(*ability_filter_fields)
end

.transform_gods(data) ⇒ Object



13
14
15
16
17
18
19
# 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_item_effect(data) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/smite/data_transform.rb', line 57

def transform_item_effect(data)
  return unless data['Description'] and data['Value']

  effect = data.delete('Description').tr(' ','')
  effect = ActiveSupport::Inflector.underscore(effect)
  data['attribute'] = effect

  value = data.delete('Value')
  @percentage = value[/%/]
  value = value.tr('+', '').to_i
  data['amount'] = value
  data
end

.transform_items(data) ⇒ Object



5
6
7
8
9
10
11
# 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) ⇒ Object



71
72
73
74
75
76
77
# File 'lib/smite/data_transform.rb', line 71

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) ⇒ Object



36
37
38
39
40
41
42
43
44
# File 'lib/smite/data_transform.rb', line 36

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) ⇒ Object



46
47
48
49
50
51
52
53
54
55
# File 'lib/smite/data_transform.rb', line 46

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')
  data['stats'] = GodStats.new(data['name'], stat_fields)
  data.except(*stats_filter_fields)
end