Class: SteamGroup

Inherits:
Object
  • Object
show all
Includes:
Cacheable, XMLData
Defined in:
lib/steam/community/steam_group.rb

Overview

The SteamGroup class represents a group in the Steam Community

Author:

  • Sebastian Staudt

Instance Attribute Summary collapse

Attributes included from Cacheable

#fetch_time

Instance Method Summary collapse

Methods included from XMLData

#parse

Methods included from Cacheable

#cache, #fetched?, included

Constructor Details

#initialize(id, fetch = true, bypass_cache = false) ⇒ SteamGroup

Creates a new ‘SteamGroup` instance for the group with the given ID

Parameters:

  • id (String, Fixnum)

    The custom URL of the group specified by the group admin or the 64bit group ID

  • fetch (Boolean)

    if ‘true` the object’s data is fetched after creation

  • bypass_cache (Boolean)

    if ‘true` the object’s data is fetched again even if it has been cached already



39
40
41
42
43
44
45
46
# File 'lib/steam/community/steam_group.rb', line 39

def initialize(id)
  if id.is_a? Numeric
    @group_id64 = id
  else
    @custom_url = id.downcase
  end
  @members = []
end

Instance Attribute Details

#custom_urlString (readonly)

Returns the custom URL of this group

The custom URL is a admin specified unique string that can be used instead of the 64bit SteamID as an identifier for a group.

Returns:

  • (String)

    The custom URL of this group



27
28
29
# File 'lib/steam/community/steam_group.rb', line 27

def custom_url
  @custom_url
end

#group_id64Fixnum (readonly)

Returns this group’s 64bit SteamID

Returns:

  • (Fixnum)

    This group’s 64bit SteamID



32
33
34
# File 'lib/steam/community/steam_group.rb', line 32

def group_id64
  @group_id64
end

Instance Method Details

#base_urlString

Returns the base URL for this group’s page

This URL is different for groups having a custom URL.

Returns:

  • (String)

    The base URL for this group



53
54
55
56
57
58
59
# File 'lib/steam/community/steam_group.rb', line 53

def base_url
  if @custom_url.nil?
    "http://steamcommunity.com/gid/#@group_id64"
  else
    "http://steamcommunity.com/groups/#@custom_url"
  end
end

#fetchObject

Loads the members of this group

This might take several HTTP requests as the Steam Community splits this data over several XML documents if the group has lots of members.

See Also:



67
68
69
70
71
72
73
74
75
76
77
# File 'lib/steam/community/steam_group.rb', line 67

def fetch
  if @member_count.nil? || @member_count == @members.size
    page = 0
  else
    page = 1
  end

  begin
    total_pages = fetch_page(page += 1)
  end while page < total_pages
end

#member_countFixnum

Returns the number of members this group has

If the members have already been fetched the size of the member array is returned. Otherwise the the first page of the member listing is fetched and the member count and the first batch of members is stored.

Returns:

  • (Fixnum)

    The number of this group’s members



86
87
88
89
90
91
92
93
# File 'lib/steam/community/steam_group.rb', line 86

def member_count
  if @member_count.nil?
    total_pages = fetch_page(1)
    @fetch_time = Time.now if total_pages == 1
  end

  @member_count
end

#membersArray<SteamId>

Returns the members of this group

If the members haven’t been fetched yet, this is done now.

Returns:

  • (Array<SteamId>)

    The Steam ID’s of the members of this group

See Also:



101
102
103
104
# File 'lib/steam/community/steam_group.rb', line 101

def members
  fetch if @members.size != @member_count
  @members
end