steam-api 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,38 @@
1
+ # -*- encoding: utf-8 -*-
2
+ module Steam
3
+ # A Ruby DSL for communicating with the Steam Web API.
4
+ # @see https://developer.valvesoftware.com/wiki/Steam_Web_API
5
+ # @since 1.0.0
6
+ class RemoteStorage
7
+ # Get Published File Details
8
+ # @param [Hash] params Parameters to pass to the API
9
+ # @option params [Fixnum] :itemcount Number of items being requested
10
+ # @option params [Fixnum] :publishedfileids Published file id to look up
11
+ # @return [Hash] A hash containing the API response
12
+ # @see http://wiki.teamfortress.com/wiki/WebAPI/GetPublishedFileDetails
13
+ def self.published_file(params: {})
14
+ response = client.get 'GetPublishedFileDetails/v1', params: params
15
+ response
16
+ end
17
+
18
+ # Get UGC File Details
19
+ # @param [Hash] params Parameters to pass to the API
20
+ # @option params [String] :key Steam Api Key
21
+ # @option params [Fixnum] :steamid If specified, only returns details
22
+ # if the file is owned by the SteamID specified
23
+ # @option params [Fixnum] :ugcid ID of UGC file to get info for
24
+ # @option params [Fixnum] :appid appID of product
25
+ # @return [Hash] A hash containing the API response
26
+ # @see http://wiki.teamfortress.com/wiki/WebAPI/GetUGCFileDetails
27
+ def self.ugc_file(params: {})
28
+ response = client.get 'GetUGCFileDetails/v1', params: params
29
+ response
30
+ end
31
+
32
+ private
33
+
34
+ def self.client
35
+ build_client 'ISteamRemoteStorage'
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,90 @@
1
+ # -*- encoding: utf-8 -*-
2
+ module Steam
3
+ # A Ruby DSL for communicating with the Steam::User Web API.
4
+ # @see https://developer.valvesoftware.com/wiki/Steam_Web_API
5
+ # @since 1.0.0
6
+ module User
7
+ # Get User's Friend List
8
+ # @param [String] steamid
9
+ # @param [String] relationship Relationship filter.
10
+ # Possibles values: all, friend.
11
+ # @return [Hash] A hash object resulting from the API call; should
12
+ # returns the friend list of any Steam user, provided their Steam
13
+ # Community profile visibility is set to "Public".
14
+ # @see http://wiki.teamfortress.com/wiki/WebAPI/GetFriendList
15
+ def self.friends(steamid, relationship: :all)
16
+ response = client.get 'GetFriendList/v1/',
17
+ params: { steamid: steamid,
18
+ relationship: relationship }
19
+ response = response.parse_key('friendslist')
20
+ .parse_key('friends')
21
+ response
22
+ end
23
+
24
+ # Get Multiple Player Bans
25
+ # @param [Array] steamids Array of SteamIDs
26
+ # @return [Hash] A hash containing the API response
27
+ # @see http://wiki.teamfortress.com/wiki/WebAPI/GetPlayerBans
28
+ def self.bans(steamids)
29
+ steamids = [steamids] unless steamids.is_a?(Array)
30
+ response = client.get 'GetPlayerBans/v1/',
31
+ params: { steamids: steamids.join(',') }
32
+ response
33
+ end
34
+
35
+ # Get Player Summaries
36
+ # @option params [Array] :steamids List of player's steamids
37
+ # @return [Hash] The hash object resulting from the API call. Some data
38
+ # associated with a Steam account may be hidden if the user has their
39
+ # profile visibility set to "Friends Only" or "Private". In that case,
40
+ # only public data will be returned.
41
+ # @see http://wiki.teamfortress.com/wiki/WebAPI/GetPlayerSummaries
42
+ def self.summary(steamid)
43
+ summaries([steamid]).first
44
+ end
45
+
46
+ # Get Player Summaries
47
+ # @param [Array] steamids List of player's steamids
48
+ # @return [Hash] The hash object resulting from the API call. Some data
49
+ # associated with a Steam account may be hidden if the user has their
50
+ # profile visibility set to "Friends Only" or "Private". In that case,
51
+ # only public data will be returned.
52
+ # @see http://wiki.teamfortress.com/wiki/WebAPI/GetPlayerSummaries
53
+ def self.summaries(steamids)
54
+ response = client.get 'GetPlayerSummaries/v2/',
55
+ params: { steamids: steamids.join(',') }
56
+ response.parse_key('response')
57
+ .parse_key('players')
58
+ end
59
+
60
+ # Get User Groups
61
+ # @param [Fixnum] steamid 64bit Steam ID to return friend list.
62
+ # @return [Hash] A hash containing the API response
63
+ # @see http://wiki.teamfortress.com/wiki/WebAPI/GetUserGroupList
64
+ def self.groups(steamid)
65
+ response = client.get 'GetUserGroupList/v1', params: { steamid: steamid }
66
+ response = response.parse_key('response')
67
+ response.check_success
68
+ response.parse_key('groups')
69
+ end
70
+
71
+ # Resolve Vanity URL
72
+ # @param [String] vanityurl The vanity URL part of a user's Steam
73
+ # profile URL. This is the basename of http://steamcommunity.com/id/ URLs
74
+ # @return [Hash] A hash containing the API response
75
+ # @see http://wiki.teamfortress.com/wiki/WebAPI/ResolveVanityURL
76
+ def self.vanity_to_steamid(vanityurl)
77
+ response = client.get 'ResolveVanityURL/v1',
78
+ params: { vanityurl: vanityurl }
79
+ response = response.parse_key('response')
80
+ response.check_success(success_condition: 1)
81
+ response.parse_key('steamid')
82
+ end
83
+
84
+ private
85
+
86
+ def self.client
87
+ build_client 'ISteamUser'
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,84 @@
1
+ # -*- encoding: utf-8 -*-
2
+ module Steam
3
+ # A Ruby DSL for communicating with the Steam Web API.
4
+ # @see https://developer.valvesoftware.com/wiki/Steam_Web_API
5
+ # @since 1.0.0
6
+ module UserStats
7
+ # Get Global Achievement Percentages for App
8
+ # @param [Fixnum] appid The ID of the game or application
9
+ # @return [Hash] The hash object of information on the global achievements overview of
10
+ # a specific game in percentages.
11
+ # @see http://wiki.teamfortress.com/wiki/WebAPI/GetGlobalAchievementPercentagesForApp
12
+ def self.achievement_percentages(appid)
13
+ response = client.get 'GetGlobalAchievementPercentagesForApp/v2',
14
+ params: { gameid: appid }
15
+ response = response.parse_key('achievementpercentages')
16
+ .parse_key('achievements')
17
+ response
18
+ end
19
+
20
+ # Get Global Stats for Game
21
+ # @param [Fixnum] appid The ID of the game or application
22
+ # @param [Hash] params Parameters to pass to the API
23
+ # @option params [Fixnum] :count Number of stats to get data for.
24
+ # @option params [String] :name[0] Names of the stats to get. For more than one value, use
25
+ # a parameter for each request. (name[0], name[1], ...) Not all stats are globally
26
+ # aggregated. The developer of the game must mark the stat as globally aggregated.
27
+ # @option params [String] :startdate Start date for daily totals
28
+ # (unix epoch timestamp). (Optional)
29
+ # @option params [String] :enddate End date for daily totals (unix epoch timestamp). (Optional)
30
+ # @return [Hash] A hash containing the API response
31
+ # @see http://wiki.teamfortress.com/wiki/WebAPI/GetGlobalStatsForGame
32
+ def self.global_for_game(appid, params: {})
33
+ params[:appid] = appid
34
+ response = client.get 'GetGlobalStatsForGame/v1', params: params
35
+ response.parse_key('response')
36
+ end
37
+
38
+ # Get stat schema
39
+ # @param [Fixnum] appid The application ID for the Steam Game.
40
+ # @param [String] language (Optional) Language
41
+ # @return [Hash] A hash containing the API response
42
+ # @see http://wiki.teamfortress.com/wiki/WebAPI/GetSchemaForGame
43
+ def self.game_schema(appid, language: nil)
44
+ params = { appid: appid }
45
+ params[:l] = language unless language.nil?
46
+ response = client.get 'GetSchemaForGame/v2', params: params
47
+ response.parse_key('game')
48
+ end
49
+
50
+ # Get Number of Current Players
51
+ # @param [Fixnum] appid to pass to the API
52
+ # @return [Hash] A hash containing the API response
53
+ # @see http://wiki.teamfortress.com/wiki/WebAPI/GetNumberOfCurrentPlayers
54
+ def self.player_count(appid)
55
+ response = client.get 'GetNumberOfCurrentPlayers/v1',
56
+ params: { appid: appid }
57
+ response.parse_key('response')
58
+ .parse_key('player_count')
59
+ end
60
+
61
+ # Get Player Achievements
62
+ # @param [Fixnum] steamid 64 bit Steam ID to return Achievements list for.
63
+ # @param [Fixnum] appid AppID to get achievements for
64
+ # @param [String] language Language. If specified, it will return language data for
65
+ # the requested language. (Optional)
66
+ # @return [Hash] A hash containing the API response
67
+ # @see http://wiki.teamfortress.com/wiki/WebAPI/GetPlayerAchievements
68
+ def self.player_achievements(appid, steamid, language: nil)
69
+ params = { appid: appid, steamid: steamid }
70
+ params[:l] = language unless language.nil?
71
+ response = client.get 'GetPlayerAchievements/v1', params: params
72
+ response = response.parse_key('playerstats')
73
+ response.check_success
74
+ response.delete('success')
75
+ response
76
+ end
77
+
78
+ private
79
+
80
+ def self.client
81
+ build_client('ISteamUserStats')
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # Versioning Info
3
+ module Steam
4
+ VERSION = '1.0.0'
5
+ end
@@ -0,0 +1,14 @@
1
+ require 'coveralls'
2
+ require 'simplecov'
3
+
4
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
5
+ SimpleCov::Formatter::HTMLFormatter,
6
+ Coveralls::SimpleCov::Formatter
7
+ ]
8
+ SimpleCov.start
9
+
10
+ if File::exist? File.join(File.dirname(__FILE__), "secret.rb")
11
+ require 'secret'
12
+ end
13
+
14
+ require 'steam-api'
@@ -0,0 +1,55 @@
1
+ require 'spec_helper'
2
+
3
+ describe Steam::Apps do
4
+ describe '.get_all' do
5
+ it 'should allow users to look up a list of all apps' do
6
+ Steam::Apps.get_all
7
+ .should_not be_nil
8
+ end
9
+
10
+ it 'should allow users to look up a list of all apps' do
11
+ game = Steam::Apps.get_all.first
12
+ game.should have_key 'appid'
13
+ game.should have_key 'name'
14
+ end
15
+ end
16
+
17
+ describe '.get_servers' do
18
+ it 'should allow users to look up a list of servers at an ip' do
19
+ Steam::Apps.get_servers(addr: '192.168.1.1')
20
+ .should_not be_nil
21
+ end
22
+
23
+ it 'should allow users to look up a list of servers at an ip' do
24
+ Steam::Apps.get_servers(addr: '192.168.1.1')
25
+ .should == []
26
+ end
27
+ end
28
+
29
+ describe '.up_to_date' do
30
+ it 'should allow users to look up version info' do
31
+ Steam::Apps.up_to_date(appid: 440, version: 10)
32
+ .should_not be_nil
33
+ end
34
+
35
+ it 'should return a false up to date value if the verion is out of date' do
36
+ check = Steam::Apps.up_to_date(appid: 440, version: 10)
37
+ check['up_to_date'].should be_false
38
+ check['version_is_listable'].should be_false
39
+ check.should have_key('required_version')
40
+ check['message'].should == 'Your server is out of date, please upgrade'
41
+ end
42
+
43
+ it 'should return a positive up to date value if the version is correct' do
44
+ current = Steam::Apps.up_to_date(appid: 440, version: 10)['required_version']
45
+ check = Steam::Apps.up_to_date(appid: 440, version: current)
46
+ check['up_to_date'].should be_true
47
+ check['version_is_listable'].should be_true
48
+ end
49
+
50
+ it 'should capture json errors' do
51
+ lambda { Steam::Apps.up_to_date(appid: nil, version: 'foo') }
52
+ .should raise_error
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe Steam::Economy do
4
+ describe '.asset_info' do
5
+ it 'should allow users to look up a list of all apps' do
6
+ Steam::Economy.asset_info(440, params: { class_count: 2,
7
+ classid0: 195151,
8
+ classid1: 16891096 })
9
+ .should_not be_nil
10
+ end
11
+
12
+ it 'should require class params' do
13
+ lambda { Steam::Economy.asset_info(440) }
14
+ .should raise_error
15
+ end
16
+
17
+ it 'should allow users to query asset info' do
18
+ result = Steam::Economy.asset_info(440, params: { class_count: 2,
19
+ classid0: 195151,
20
+ classid1: 16891096 })
21
+ result.should have_key('195151')
22
+ result.should have_key('16891096')
23
+ end
24
+ end
25
+
26
+ describe '.asset_prices' do
27
+ it 'should allow users to look up a list asset prices' do
28
+ Steam::Economy.asset_prices(440)
29
+ .should_not be_nil
30
+ end
31
+
32
+ it 'should allow return a list of assets' do
33
+ Steam::Economy.asset_prices(440)
34
+ .should have_key('assets')
35
+ end
36
+
37
+ it 'should allow return a list of asset tags' do
38
+ Steam::Economy.asset_prices(440)
39
+ .should have_key('tags')
40
+ end
41
+
42
+ it 'should allow return a list of asset tag ids' do
43
+ Steam::Economy.asset_prices(440)
44
+ .should have_key('tag_ids')
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe Steam::News do
4
+ describe '.get' do
5
+ it 'should allow users to look up a list news for an app' do
6
+ Steam::News.get(440)
7
+ .should_not be_nil
8
+ end
9
+
10
+ it 'should allow users to look up a list news for an app' do
11
+ news = Steam::News.get(440)
12
+ news.count.should == 20
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,94 @@
1
+ require 'spec_helper'
2
+
3
+ describe Steam::Player do
4
+ describe '.owned_games' do
5
+ it 'should allow users to retrieve a list of games' do
6
+ Steam::Player.owned_games(76561197993276293)
7
+ .should_not be_nil
8
+ end
9
+
10
+ it 'should allow users to retrieve a list of games' do
11
+ Steam::Player.owned_games(76561197993276293)
12
+ .should have_key('game_count')
13
+ end
14
+
15
+ it 'should allow users to retrieve a list of games' do
16
+ Steam::Player.owned_games(76561197993276293)
17
+ .should have_key('games')
18
+ end
19
+ end
20
+
21
+ describe '.recently_played_games' do
22
+ it 'should allow users to list a players recent games' do
23
+ Steam::Player.recently_played_games(76561197993276293)
24
+ .should_not be_nil
25
+ end
26
+
27
+ it 'should allow users to list a players recent games' do
28
+ Steam::Player.recently_played_games(76561197993276293)
29
+ .should have_key 'total_count'
30
+ end
31
+
32
+ it 'should allow users to list a players recent games' do
33
+ Steam::Player.recently_played_games(76561197993276293)
34
+ .should have_key 'games'
35
+ end
36
+ end
37
+
38
+ describe '.steam_level' do
39
+ it 'should allow users to retrieve a users steam level' do
40
+ Steam::Player.steam_level(76561197993276293)
41
+ .should_not be_nil
42
+ end
43
+
44
+ it 'should allow users to retrieve a users steam level' do
45
+ Steam::Player.steam_level(76561197993276293)
46
+ .should be_a(Fixnum)
47
+ end
48
+ end
49
+
50
+ describe '.badges' do
51
+ it 'should allow a user to retrieve badges for a player' do
52
+ Steam::Player.badges(76561197993276293)
53
+ .should_not be_nil
54
+ end
55
+
56
+ it 'should allow a user to retrieve badges for a player' do
57
+ Steam::Player.badges(76561197993276293)
58
+ .should have_key 'badges'
59
+ end
60
+
61
+ it 'should allow a user to retrieve badges for a player' do
62
+ Steam::Player.badges(76561197993276293)
63
+ .should have_key 'player_level'
64
+ end
65
+
66
+ it 'should allow a user to retrieve badges for a player' do
67
+ Steam::Player.badges(76561197993276293)
68
+ .should have_key 'player_xp'
69
+ end
70
+
71
+ it 'should allow a user to retrieve badges for a player' do
72
+ Steam::Player.badges(76561197993276293)
73
+ .should have_key 'player_xp_needed_current_level'
74
+ end
75
+
76
+ it 'should allow a user to retrieve badges for a player' do
77
+ Steam::Player.badges(76561197993276293)
78
+ .should have_key 'player_xp_needed_to_level_up'
79
+ end
80
+ end
81
+
82
+ describe '.community_badge_progress' do
83
+ it 'should allow a user to retrieve community badge info for a player' do
84
+ Steam::Player.community_badge_progress(76561197993276293)
85
+ .should_not be_nil
86
+ end
87
+
88
+ it 'should allow a user to retrieve community badge info for a player' do
89
+ quest = Steam::Player.community_badge_progress(76561197993276293).first
90
+ quest.should have_key 'questid'
91
+ quest.should have_key 'completed'
92
+ end
93
+ end
94
+ end