Class: GameStats
- Inherits:
-
Object
- Object
- GameStats
- Defined in:
- lib/steam/community/game_stats.rb
Overview
The GameStats class represents the game statistics for a single user and a specific game
Direct Known Subclasses
AlienSwarmStats, CSSStats, DefenseGridStats, DoDSStats, L4D2Stats, L4DStats, Portal2Stats, TF2Stats
Instance Attribute Summary collapse
-
#app_id ⇒ Object
readonly
Returns the value of attribute app_id.
-
#custom_url ⇒ Object
readonly
Returns the value of attribute custom_url.
-
#game_friendly_name ⇒ Object
readonly
Returns the value of attribute game_friendly_name.
-
#game_name ⇒ Object
readonly
Returns the value of attribute game_name.
-
#hours_played ⇒ Object
readonly
Returns the value of attribute hours_played.
-
#privacy_state ⇒ Object
readonly
Returns the value of attribute privacy_state.
-
#steam_id64 ⇒ Object
readonly
Returns the value of attribute steam_id64.
Class Method Summary collapse
-
.create_game_stats(steam_id, game_name) ⇒ Object
Creates a GameStats (or one of its subclasses) object for the given user depending on the game selected.
Instance Method Summary collapse
-
#achievements ⇒ Object
Returns the achievements for this stats’ user and game.
-
#achievements_done ⇒ Object
Returns the count of achievements done by this player.
-
#achievements_percentage ⇒ Object
Returns a float value representing the percentage of achievements done by this player.
-
#base_url ⇒ Object
Returns the base URL for this Steam Communtiy object.
-
#initialize(id, game_name) ⇒ GameStats
constructor
Creates a GameStats object and fetches data from the Steam Community for the given user and game.
- #public? ⇒ Boolean
Constructor Details
#initialize(id, game_name) ⇒ GameStats
Creates a GameStats object and fetches data from the Steam Community for the given user and game
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/steam/community/game_stats.rb', line 53 def initialize(id, game_name) if id.is_a? Numeric @steam_id64 = id else @custom_url = id.downcase end @game_friendly_name = game_name url = base_url + '?xml=all' @xml_data = REXML::Document.new(open(url, {:proxy => true}).read).root error = @xml_data.elements['error'] raise SteamCondenserException.new(error.text) unless error.nil? @privacy_state = @xml_data.elements['privacyState'].text if public? @app_id = @xml_data.elements['game/gameLink'].text.match(/http:\/\/store.steampowered.com\/app\/([1-9][0-9]+)/)[1].to_i @custom_url = @xml_data.elements['player/customURL'].text if @custom_url.nil? @game_name = @xml_data.elements['game/gameName'].text @hours_played = @xml_data.elements['stats/hoursPlayed'].text unless @xml_data.elements['stats/hoursPlayed'].nil? @steam_id64 = @xml_data.elements['player/steamID64'].text.to_i if @steam_id64.nil? end end |
Instance Attribute Details
#app_id ⇒ Object (readonly)
Returns the value of attribute app_id.
15 16 17 |
# File 'lib/steam/community/game_stats.rb', line 15 def app_id @app_id end |
#custom_url ⇒ Object (readonly)
Returns the value of attribute custom_url.
15 16 17 |
# File 'lib/steam/community/game_stats.rb', line 15 def custom_url @custom_url end |
#game_friendly_name ⇒ Object (readonly)
Returns the value of attribute game_friendly_name.
15 16 17 |
# File 'lib/steam/community/game_stats.rb', line 15 def game_friendly_name @game_friendly_name end |
#game_name ⇒ Object (readonly)
Returns the value of attribute game_name.
15 16 17 |
# File 'lib/steam/community/game_stats.rb', line 15 def game_name @game_name end |
#hours_played ⇒ Object (readonly)
Returns the value of attribute hours_played.
15 16 17 |
# File 'lib/steam/community/game_stats.rb', line 15 def hours_played @hours_played end |
#privacy_state ⇒ Object (readonly)
Returns the value of attribute privacy_state.
15 16 17 |
# File 'lib/steam/community/game_stats.rb', line 15 def privacy_state @privacy_state end |
#steam_id64 ⇒ Object (readonly)
Returns the value of attribute steam_id64.
15 16 17 |
# File 'lib/steam/community/game_stats.rb', line 15 def steam_id64 @steam_id64 end |
Class Method Details
.create_game_stats(steam_id, game_name) ⇒ Object
Creates a GameStats (or one of its subclasses) object for the given user depending on the game selected
20 21 22 23 24 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 |
# File 'lib/steam/community/game_stats.rb', line 20 def self.create_game_stats(steam_id, game_name) case game_name when 'alienswarm' require 'steam/community/alien_swarm/alien_swarm_stats' AlienSwarmStats.new(steam_id) when 'cs:s' require 'steam/community/css/css_stats' CSSStats.new(steam_id) when 'defensegrid:awakening' require 'steam/community/defense_grid/defense_grid_stats' DefenseGridStats.new(steam_id) when 'dod:s' require 'steam/community/dods/dods_stats' DoDSStats.new(steam_id) when 'l4d' require 'steam/community/l4d/l4d_stats' L4DStats.new(steam_id) when 'l4d2' require 'steam/community/l4d/l4d2_stats' L4D2Stats.new(steam_id) when 'portal2' require 'steam/community/portal2/portal2_stats' Portal2Stats.new steam_id when 'tf2' require 'steam/community/tf2/tf2_stats' TF2Stats.new(steam_id) else new(steam_id, game_name) end end |
Instance Method Details
#achievements ⇒ Object
Returns the achievements for this stats’ user and game. If the achievements haven’t been parsed already, parsing is done now.
79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/steam/community/game_stats.rb', line 79 def achievements return unless public? if @achievements.nil? @achievements = Array.new @xml_data.elements.each('achievements/achievement') do |achievement_data| @achievements << GameAchievement.new(@steam_id64, @app_id, achievement_data) end @achievements_done = @achievements.reject{ |a| !a.unlocked? }.size end @achievements end |
#achievements_done ⇒ Object
Returns the count of achievements done by this player. If achievements haven’t been parsed yet, parsing is done now.
96 97 98 99 |
# File 'lib/steam/community/game_stats.rb', line 96 def achievements_done achievements if @achievements_done.nil? @achievements_done end |
#achievements_percentage ⇒ Object
Returns a float value representing the percentage of achievements done by this player. If achievements haven’t been parsed yet, parsing is done now.
103 104 105 |
# File 'lib/steam/community/game_stats.rb', line 103 def achievements_percentage achievements_done.to_f / @achievements.size end |
#base_url ⇒ Object
Returns the base URL for this Steam Communtiy object
108 109 110 111 112 113 114 |
# File 'lib/steam/community/game_stats.rb', line 108 def base_url if @custom_url.nil? "http://steamcommunity.com/profiles/#{@steam_id64}/stats/#{@game_friendly_name}" else "http://steamcommunity.com/id/#{@custom_url}/stats/#{@game_friendly_name}" end end |
#public? ⇒ Boolean
116 117 118 |
# File 'lib/steam/community/game_stats.rb', line 116 def public? @privacy_state == 'public' end |