1- using SteamWebAPI2 . Utilities ;
1+ using Steam . Models . GameServers ;
2+ using SteamWebAPI2 . Models . GameServers ;
3+ using SteamWebAPI2 . Utilities ;
24using System . Collections . Generic ;
35using System . Threading . Tasks ;
46
57namespace SteamWebAPI2 . Interfaces
68{
9+ public enum GameServersAppId
10+ {
11+ TeamFortress2 = 440 ,
12+ CounterStrikeGo = 730
13+ }
14+
715 public class GameServersService : IGameServersService
816 {
917 private ISteamWebInterface steamWebInterface ;
@@ -19,71 +27,114 @@ public GameServersService(ISteamWebRequest steamWebRequest, ISteamWebInterface s
1927 : steamWebInterface ;
2028 }
2129
22- public async Task < ISteamWebResponse < dynamic > > GetAccountListAsync ( )
30+ /// <summary>Gets a list of game server accounts with their logon tokens.
31+ /// </summary>
32+ /// <returns>Collection of game server accounts attached to the account associated with the web API key.</returns>
33+ public async Task < ISteamWebResponse < AccountListModel > > GetAccountListAsync ( )
2334 {
24- var steamWebResponse = await steamWebInterface . GetAsync < dynamic > ( "GetAccountList" , 1 ) ;
25- return steamWebResponse ;
35+ var steamWebResponse = await steamWebInterface . GetAsync < AccountListContainer > ( "GetAccountList" , 1 ) ;
36+ var steamWebResponseModel = AutoMapperConfiguration . Mapper . Map <
37+ ISteamWebResponse < AccountListContainer > ,
38+ ISteamWebResponse < AccountListModel > > ( steamWebResponse ) ;
39+ return steamWebResponseModel ;
2640 }
2741
28- public async Task < ISteamWebResponse < dynamic > > CreateAccount ( uint appId , string memo )
42+ /// <summary>Creates a persistent game server account.
43+ /// </summary>
44+ /// <param name="appId">Only supports TF2 and CSGO.</param>
45+ /// <param name="memo">Free text to attach to server. Does nothing but act as an identifier.</param>
46+ /// <returns>Steam ID and LoginToken for the new server.</returns>
47+ public async Task < ISteamWebResponse < CreateAccountModel > > CreateAccountAsync ( GameServersAppId appId , string memo )
2948 {
3049 List < SteamWebRequestParameter > parameters = new List < SteamWebRequestParameter > ( ) ;
31- parameters . AddIfHasValue ( appId , "appid" ) ;
50+ parameters . AddIfHasValue ( ( int ) appId , "appid" ) ;
3251 parameters . AddIfHasValue ( memo , "memo" ) ;
33- var steamWebResponse = await steamWebInterface . PostAsync < dynamic > ( "CreateAccount" , 1 , parameters ) ;
34- return steamWebResponse ;
52+
53+ var steamWebResponse = await steamWebInterface . PostAsync < CreateAccountContainer > ( "CreateAccount" , 1 , parameters ) ;
54+
55+ var steamWebResponseModel = AutoMapperConfiguration . Mapper . Map <
56+ ISteamWebResponse < CreateAccountContainer > ,
57+ ISteamWebResponse < CreateAccountModel > > ( steamWebResponse ) ;
58+
59+ return steamWebResponseModel ;
3560 }
3661
37- public async Task < ISteamWebResponse < dynamic > > SetMemo ( ulong steamId , string memo )
62+ /// <summary>This method changes the memo associated with the game server account.
63+ /// Memos do not affect the account in any way. The memo shows up in the GetAccountList
64+ /// response and serves only as a reminder of what the account is used for.
65+ /// </summary>
66+ /// <param name="steamId">Steam ID of the server to alter.</param>
67+ /// <param name="memo">Free text to attach to server. Does nothing but act as an identifier.</param>
68+ /// <returns>200 OK with no content indicates success from this endpoint.</returns>
69+ public async Task SetMemoAsync ( ulong steamId , string memo )
3870 {
3971 List < SteamWebRequestParameter > parameters = new List < SteamWebRequestParameter > ( ) ;
4072 parameters . AddIfHasValue ( steamId , "steamid" ) ;
4173 parameters . AddIfHasValue ( memo , "memo" ) ;
42- var steamWebResponse = await steamWebInterface . PostAsync < dynamic > ( "SetMemo" , 1 , parameters ) ;
43- return steamWebResponse ;
74+ await steamWebInterface . PostAsync < dynamic > ( "SetMemo" , 1 , parameters ) ;
4475 }
4576
46- public async Task < ISteamWebResponse < dynamic > > ResetLoginToken ( ulong steamId )
77+ /// <summary>Generates a new login token for the specified game server
78+ /// </summary>
79+ /// <param name="steamId">The SteamID of the game server to reset the login token</param>
80+ /// <returns>New login token</returns>
81+ public async Task < ISteamWebResponse < string > > ResetLoginTokenAsync ( ulong steamId )
4782 {
4883 List < SteamWebRequestParameter > parameters = new List < SteamWebRequestParameter > ( ) ;
4984 parameters . AddIfHasValue ( steamId , "steamid" ) ;
50- var steamWebResponse = await steamWebInterface . PostAsync < dynamic > ( "ResetLoginToken" , 1 , parameters ) ;
51- return steamWebResponse ;
85+ var steamWebResponse = await steamWebInterface . PostAsync < ResetLoginTokenContainer > ( "ResetLoginToken" , 1 , parameters ) ;
86+ var steamWebResponseModel = AutoMapperConfiguration . Mapper . Map <
87+ ISteamWebResponse < ResetLoginTokenContainer > ,
88+ ISteamWebResponse < string > > ( steamWebResponse ) ;
89+ return steamWebResponseModel ;
5290 }
5391
54- public async Task < ISteamWebResponse < dynamic > > DeleteAccount ( ulong steamId )
92+ /// <summary>Deletes a persistent game server account
93+ /// </summary>
94+ /// <param name="steamId">The SteamID of the game server account to delete</param>
95+ /// <returns>200 OK with no content indicates success from this endpoint.</returns>
96+ public async Task DeleteAccountAsync ( ulong steamId )
5597 {
5698 List < SteamWebRequestParameter > parameters = new List < SteamWebRequestParameter > ( ) ;
5799 parameters . AddIfHasValue ( steamId , "steamid" ) ;
58- var steamWebResponse = await steamWebInterface . PostAsync < dynamic > ( "DeleteAccount" , 1 , parameters ) ;
59- return steamWebResponse ;
100+ await steamWebInterface . PostAsync < dynamic > ( "DeleteAccount" , 1 , parameters ) ;
60101 }
61102
62- public async Task < ISteamWebResponse < dynamic > > GetAccountPublicInfo ( ulong steamId )
103+ /// <summary>Gets public information about a given game server account
104+ /// </summary>
105+ /// <param name="steamId">The SteamID of the game server to get info</param>
106+ /// <returns>Steam ID and associated App ID of the game server</returns>
107+ public async Task < ISteamWebResponse < AccountPublicInfoModel > > GetAccountPublicInfoAsync ( ulong steamId )
63108 {
64109 List < SteamWebRequestParameter > parameters = new List < SteamWebRequestParameter > ( ) ;
65110 parameters . AddIfHasValue ( steamId , "steamid" ) ;
66- var steamWebResponse = await steamWebInterface . GetAsync < dynamic > ( "GetAccountPublicInfo" , 1 , parameters ) ;
67- return steamWebResponse ;
111+ var steamWebResponse = await steamWebInterface . GetAsync < AccountPublicInfoContainer > ( "GetAccountPublicInfo" , 1 , parameters ) ;
112+ var steamWebResponseModel = AutoMapperConfiguration . Mapper . Map <
113+ ISteamWebResponse < AccountPublicInfoContainer > ,
114+ ISteamWebResponse < AccountPublicInfoModel > > ( steamWebResponse ) ;
115+ return steamWebResponseModel ;
68116 }
69117
70- public async Task < ISteamWebResponse < dynamic > > QueryLoginToken ( string loginToken )
118+ public async Task < ISteamWebResponse < QueryLoginTokenModel > > QueryLoginTokenAsync ( string loginToken )
71119 {
72120 List < SteamWebRequestParameter > parameters = new List < SteamWebRequestParameter > ( ) ;
73121 parameters . AddIfHasValue ( loginToken , "login_token" ) ;
74- var steamWebResponse = await steamWebInterface . GetAsync < dynamic > ( "QueryLoginToken" , 1 , parameters ) ;
75- return steamWebResponse ;
122+ var steamWebResponse = await steamWebInterface . GetAsync < QueryLoginTokenContainer > ( "QueryLoginToken" , 1 , parameters ) ;
123+ var steamWebResponseModel = AutoMapperConfiguration . Mapper . Map <
124+ ISteamWebResponse < QueryLoginTokenContainer > ,
125+ ISteamWebResponse < QueryLoginTokenModel > > ( steamWebResponse ) ;
126+ return steamWebResponseModel ;
76127 }
77128
78- public async Task < ISteamWebResponse < dynamic > > GetServerSteamIDsByIP ( IReadOnlyCollection < string > serverIPs )
129+ public async Task < ISteamWebResponse < dynamic > > GetServerSteamIDsByIPAsync ( IReadOnlyCollection < string > serverIPs )
79130 {
80131 List < SteamWebRequestParameter > parameters = new List < SteamWebRequestParameter > ( ) ;
81132 parameters . AddIfHasValue ( serverIPs , "server_ips" ) ;
82133 var steamWebResponse = await steamWebInterface . GetAsync < dynamic > ( "GetServerSteamIDsByIP" , 1 , parameters ) ;
83134 return steamWebResponse ;
84135 }
85136
86- public async Task < ISteamWebResponse < dynamic > > GetServerIPsBySteamID ( IReadOnlyCollection < ulong > steamIds )
137+ public async Task < ISteamWebResponse < dynamic > > GetServerIPsBySteamIDAsync ( IReadOnlyCollection < ulong > steamIds )
87138 {
88139 List < SteamWebRequestParameter > parameters = new List < SteamWebRequestParameter > ( ) ;
89140 parameters . AddIfHasValue ( steamIds , "server_steamids" ) ;
0 commit comments