public async Task<Cart> CreateCartAsync(long steamId) { List<WebRequestParameter> requestParameters = new List<WebRequestParameter>(); WebRequestParameter steamIdParameter = new WebRequestParameter("steamid", steamId.ToString()); requestParameters.Add(steamIdParameter); // send the request and wait for the response JObject data = await PerformSteamRequestAsync("ISteamMicroTxn", "CreateCart", 1, requestParameters); bool success = TypeHelper.CreateBoolean(data["result"]["success"]); if (!success) throw new Exception(E_HTTP_RESPONSE_RESULT_FAILED); try { Cart cart = new Cart() { ID = TypeHelper.CreateLong(data["result"]["cartgid"]), IsValid = true, OwnerSteamID = steamId }; return cart; } catch { throw new Exception(E_JSON_DESERIALIZATION_FAILED); } }
/// <summary> /// This should return a list of "LineItem" objects for every item in the cart, but I don't yet know how to add items /// to a cart after creating it, so this method currently will never return success. /// </summary> /// <param name="steamId"></param> /// <returns></returns> public async Task<List<LineItem>> GetCartContents(long steamId) { List<WebRequestParameter> requestParameters = new List<WebRequestParameter>(); WebRequestParameter steamIdParameter = new WebRequestParameter("steamid", steamId.ToString()); requestParameters.Add(steamIdParameter); // send the request and wait for the response JObject data = await PerformSteamRequestAsync("ISteamMicroTxn", "GetCartContents", 1, requestParameters); bool success = TypeHelper.CreateBoolean(data["result"]["success"]); if (!success) throw new Exception(E_HTTP_RESPONSE_RESULT_FAILED); try { List<LineItem> lineItems = new List<LineItem>(); foreach (JObject groupObject in data["result"]["lineitems"]) { LineItem lineItem = new LineItem(); lineItems.Add(lineItem); } return lineItems; } catch { throw new Exception(E_JSON_DESERIALIZATION_FAILED); } }
public async Task<int> GetNumberOfCurrentPlayersAsync(uint appId) { WebRequestParameter appIdParameter = new WebRequestParameter("appid", appId.ToString()); List<WebRequestParameter> requestParameters = new List<WebRequestParameter>(); requestParameters.Add(appIdParameter); JObject data = await PerformSteamRequestAsync("ISteamUserStats", "GetNumberOfCurrentPlayers", 1, requestParameters); try { int playerCount = 0; foreach (JProperty responseProperty in data["response"]) { if (responseProperty.Name == "result") { if (int.Parse(responseProperty.Value.ToString()) != 1) throw new Exception(E_HTTP_RESPONSE_RESULT_FAILED); } else if (responseProperty.Name == "player_count") playerCount = Convert.ToInt32(responseProperty.Value.ToString()); } return playerCount; } catch { throw new Exception(E_JSON_DESERIALIZATION_FAILED); } }
public async Task<List<AchievementPercentage>> GetGlobalAchievementPercentagesForAppAsync(uint appId) { WebRequestParameter appIdParameter = new WebRequestParameter("gameid", appId.ToString()); List<WebRequestParameter> requestParameters = new List<WebRequestParameter>(); requestParameters.Add(appIdParameter); JObject data = await PerformSteamRequestAsync("ISteamUserStats", "GetGlobalAchievementPercentagesForApp", 2, requestParameters); List<AchievementPercentage> achievementPercentages = new List<AchievementPercentage>(); try { foreach (JObject achievementObject in data["achievementpercentages"]["achievements"]) { AchievementPercentage achievementPercentage = new AchievementPercentage(); achievementPercentage.Name = achievementObject["name"].ToString(); achievementPercentage.Percent = Convert.ToDouble(achievementObject["percent"].ToString()); achievementPercentages.Add(achievementPercentage); } return achievementPercentages; } catch { throw new Exception(E_JSON_DESERIALIZATION_FAILED); } }
public async Task<AppNews> GetNewsForAppAsync(int appId, int maxContentLength, DateTime? endDate, int postCountToReturn) { // create parameters for the request WebRequestParameter appIdParameter = new WebRequestParameter("appid", appId.ToString()); List<WebRequestParameter> requestParameters = new List<WebRequestParameter>(); requestParameters.Add(appIdParameter); // send the request and wait for the response JObject data = await PerformSteamRequestAsync("ISteamNews", "GetNewsForApp", 2, requestParameters); try { AppNews appNews = new AppNews(); foreach (JProperty appNewsProperty in data["appnews"]) { if (appNewsProperty.Name == "appid") appNews.AppID = int.Parse(appNewsProperty.Value.ToString()); else if (appNewsProperty.Name == "newsitems") { foreach (JObject newsItemObject in data["appnews"]["newsitems"]) { NewsItem newsItem = new NewsItem(); newsItem.GID = newsItemObject["gid"].ToString(); newsItem.Title = newsItemObject["title"].ToString(); newsItem.Url = newsItemObject["url"].ToString(); newsItem.IsExternalUrl = Convert.ToBoolean(newsItemObject["is_external_url"].ToString()); newsItem.Author = newsItemObject["author"].ToString(); newsItem.Contents = newsItemObject["contents"].ToString(); newsItem.FeedLabel = newsItemObject["feedlabel"].ToString(); newsItem.Date = TypeHelper.CreateDateTime(newsItemObject["date"]); newsItem.FeedName = newsItemObject["feedname"].ToString(); appNews.NewsItems.Add(newsItem); } } } return appNews; } catch { throw new Exception(E_JSON_DESERIALIZATION_FAILED); } }
public async Task<List<UserBanStatus>> GetPlayerBansAsync(IList<long> steamIds) { List<WebRequestParameter> requestParameters = new List<WebRequestParameter>(); StringBuilder steamIdList = new StringBuilder(); foreach (long steamId in steamIds) { if (steamIds.IndexOf(steamId) == 0) steamIdList.Append(steamId); else steamIdList.Append("," + steamId); } WebRequestParameter steamIdParameter = new WebRequestParameter("steamids", steamIdList.ToString()); requestParameters.Add(steamIdParameter); // send the request and wait for the response JObject data = await PerformSteamRequestAsync("ISteamUser", "GetPlayerBans", 1, requestParameters); try { List<UserBanStatus> playerBans = new List<UserBanStatus>(); foreach (JObject playerBanObject in data["players"]) { UserBanStatus playerBan = new UserBanStatus() { SteamID = TypeHelper.CreateLong(playerBanObject["SteamId"]), IsCommunityBanned = TypeHelper.CreateBoolean(playerBanObject["CommunityBanned"]), IsVACBanned = TypeHelper.CreateBoolean(playerBanObject["VACBanned"]), EconomyBanType = TypeHelper.CreateString(playerBanObject["EconomyBan"]) }; playerBans.Add(playerBan); } return playerBans; } catch { throw new Exception(E_JSON_DESERIALIZATION_FAILED); } }
public async Task<List<Friend>> GetFriendListAsync(long steamId, string relationship = "") { List<WebRequestParameter> requestParameters = new List<WebRequestParameter>(); // create parameters for the request WebRequestParameter steamIdParameter = new WebRequestParameter("steamid", steamId.ToString()); requestParameters.Add(steamIdParameter); if (!String.IsNullOrEmpty(relationship)) { WebRequestParameter relationshipParameter = new WebRequestParameter("relationship", relationship.ToString()); requestParameters.Add(relationshipParameter); } // send the request and wait for the response JObject data = await PerformSteamRequestAsync("ISteamUser", "GetFriendList", 1, requestParameters); try { List<Friend> friends = new List<Friend>(); foreach (JObject friendObject in data["friendslist"]["friends"]) { Friend friend = new Friend() { SteamID = TypeHelper.CreateLong(friendObject["steamid"]), Relationship = TypeHelper.CreateString(friendObject["relationship"]), FriendSinceDate = TypeHelper.CreateDateTime(friendObject["friend_since"]) }; friends.Add(friend); } return friends; } catch { throw new Exception(E_JSON_DESERIALIZATION_FAILED); } }
public SteamApps(WebRequestParameter developerKey) : base(developerKey) { }
//public async Task<List<Group>> GetUserGroupListAsync(long steamId) //{ // List<WebRequestParameter> requestParameters = new List<WebRequestParameter>(); // WebRequestParameter steamIdParameter = new WebRequestParameter("steamid", steamId.ToString()); // requestParameters.Add(steamIdParameter); // // send the request and wait for the response // JObject data = await PerformSteamRequestAsync("ISteamUser", "GetUserGroupList", 1, requestParameters); // bool success = TypeHelper.CreateBoolean(data["response"]["success"]); // if (!success) // throw new Exception(E_HTTP_RESPONSE_RESULT_FAILED); // try // { // List<Group> groups = new List<Group>(); // foreach (JObject groupObject in data["response"]["groups"]) // { // Group group = new Group() // { // ID = TypeHelper.CreateInt(groupObject["gid"]) // }; // groups.Add(group); // } // return groups; // } // catch // { // throw new Exception(E_JSON_DESERIALIZATION_FAILED); // } //} public async Task<long> ResolveVanityURLAsync(string vanityUrl) { List<WebRequestParameter> requestParameters = new List<WebRequestParameter>(); WebRequestParameter steamIdParameter = new WebRequestParameter("vanityurl", vanityUrl); requestParameters.Add(steamIdParameter); // send the request and wait for the response JObject data = await PerformSteamRequestAsync("ISteamUser", "ResolveVanityURL", 1, requestParameters); int success = TypeHelper.CreateInt(data["response"]["success"]); if (success != 1) throw new Exception(E_HTTP_RESPONSE_RESULT_FAILED); try { return TypeHelper.CreateLong(data["response"]["steamid"]); } catch { throw new Exception(E_JSON_DESERIALIZATION_FAILED); } }
public async Task<List<UserSummary>> GetPlayerSummariesAsync(List<long> steamIds) { List<WebRequestParameter> requestParameters = new List<WebRequestParameter>(); StringBuilder steamIdList = new StringBuilder(); foreach (long steamId in steamIds) { if (steamIds.IndexOf(steamId) == 0) steamIdList.Append(steamId); else steamIdList.Append("," + steamId); } WebRequestParameter steamIdParameter = new WebRequestParameter("steamids", steamIdList.ToString()); requestParameters.Add(steamIdParameter); // send the request and wait for the response JObject data = await PerformSteamRequestAsync("ISteamUser", "GetPlayerSummaries", 2, requestParameters); try { List<UserSummary> playerSummaries = new List<UserSummary>(); foreach (JObject playerSummaryObject in data["response"]["players"]) { UserSummary playerSummary = new UserSummary(); playerSummary.SteamID = TypeHelper.CreateLong(playerSummaryObject["steamid"]); string communityVisibilityState = TypeHelper.CreateString(playerSummaryObject["communityvisibilitystate"]); if (communityVisibilityState == "1") playerSummary.ProfileVisibility = ProfileVisibility.Private; else if (communityVisibilityState == "3") playerSummary.ProfileVisibility = ProfileVisibility.Public; else if (communityVisibilityState == "8") playerSummary.ProfileVisibility = ProfileVisibility.FriendsOnly; else playerSummary.ProfileVisibility = ProfileVisibility.Unknown; playerSummary.ProfileState = TypeHelper.CreateInt(playerSummaryObject["profilestate"]); playerSummary.Nickname = TypeHelper.CreateString(playerSummaryObject["personaname"]); playerSummary.LastLoggedOffDate = TypeHelper.CreateDateTime(playerSummaryObject["lastlogoff"]); playerSummary.PlayingGameID = TypeHelper.CreateLong(playerSummaryObject["gameid"]); playerSummary.PlayingGameName = TypeHelper.CreateString(playerSummaryObject["gameextrainfo"]); // comment permission can be null if the user sets his permissions to "Friends Only" (I have no idea why) if (playerSummaryObject["commentpermission"] != null) { string commentPermission = TypeHelper.CreateString(playerSummaryObject["commentpermission"]); if (commentPermission == "2") playerSummary.CommentPermission = CommentPermission.Private; else if (commentPermission == "3") playerSummary.CommentPermission = CommentPermission.Public; else playerSummary.CommentPermission = CommentPermission.Unknown; } else playerSummary.CommentPermission = CommentPermission.FriendsOnly; playerSummary.Profile = TypeHelper.CreateUri(playerSummaryObject["profileurl"]); playerSummary.Avatar = TypeHelper.CreateUri(playerSummaryObject["avatar"]); playerSummary.AvatarMedium = TypeHelper.CreateUri(playerSummaryObject["avatarmedium"]); playerSummary.AvatarFull = TypeHelper.CreateUri(playerSummaryObject["avatarfull"]); string personaState = TypeHelper.CreateString(playerSummaryObject["personastate"]); if (personaState == "0") playerSummary.UserStatus = UserStatus.Offline; else if (personaState == "1") { if (!String.IsNullOrEmpty(playerSummary.PlayingGameName)) playerSummary.UserStatus = UserStatus.InGame; else playerSummary.UserStatus = UserStatus.Online; } else if (personaState == "2") playerSummary.UserStatus = UserStatus.Busy; else if (personaState == "3") playerSummary.UserStatus = UserStatus.Away; else if (personaState == "4") playerSummary.UserStatus = UserStatus.Snooze; else playerSummary.UserStatus = UserStatus.Unknown; if (!String.IsNullOrEmpty(playerSummary.PlayingGameName)) { playerSummary.UserStatus = UserStatus.InGame; } playerSummary.RealName = TypeHelper.CreateString(playerSummaryObject["realname"]); playerSummary.PrimaryGroupID = TypeHelper.CreateLong(playerSummaryObject["primaryclanid"]); playerSummary.AccountCreatedDate = TypeHelper.CreateDateTime(playerSummaryObject["timecreated"]); playerSummary.CountryCode = TypeHelper.CreateString(playerSummaryObject["loccountrycode"]); playerSummary.StateCode = TypeHelper.CreateString(playerSummaryObject["locstatecode"]); playerSummary.CityCode = TypeHelper.CreateInt(playerSummaryObject["loccityid"]); playerSummaries.Add(playerSummary); } return playerSummaries; } catch { throw new Exception(E_JSON_DESERIALIZATION_FAILED); } }
public SteamWebRequest(WebRequestParameter developerKey) { this.developerKey = developerKey; }
public async Task<GameSchema> GetSchemaForGameAsync(uint appId, string language = "") { List<WebRequestParameter> requestParameters = new List<WebRequestParameter>(); WebRequestParameter appIdParameter = new WebRequestParameter("appid", appId.ToString()); requestParameters.Add(appIdParameter); if (!String.IsNullOrEmpty(language)) { WebRequestParameter languageParameter = new WebRequestParameter("l", language); requestParameters.Add(languageParameter); } JObject data = await PerformSteamRequestAsync("ISteamUserStats", "GetSchemaForGame", 2, requestParameters); try { GameSchema gameSchema = new GameSchema(); foreach (JProperty responseProperty in data["game"]) { if (responseProperty.Name == "gameName") gameSchema.GameName = responseProperty.Value.ToString(); else if (responseProperty.Name == "gameVersion") gameSchema.GameVersion = responseProperty.Value.ToString(); else if (responseProperty.Name == "availableGameStats") { foreach (JObject achievementObject in data["game"]["availableGameStats"]["achievements"]) { AchievementSchema achievementSchema = new AchievementSchema(); achievementSchema.Name = achievementObject["name"].ToString(); achievementSchema.DefaultValue = Convert.ToInt32(achievementObject["defaultvalue"].ToString()); achievementSchema.DisplayName = achievementObject["displayName"].ToString(); if (achievementObject["hidden"].ToString() == "1") achievementSchema.IsHidden = true; else achievementSchema.IsHidden = false; achievementSchema.Icon = new Uri(achievementObject["icon"].ToString()); achievementSchema.IconGray = new Uri(achievementObject["icongray"].ToString()); gameSchema.Achievements.Add(achievementSchema); } } } return gameSchema; } catch { throw new Exception(E_JSON_DESERIALIZATION_FAILED); } }
public SteamMicroTransaction(WebRequestParameter developerKey) : base(developerKey) { }
public async Task<UserAchievements> GetPlayerAchievementsAsync(ulong steamId, uint appId, string language = "") { List<WebRequestParameter> requestParameters = new List<WebRequestParameter>(); WebRequestParameter steamIdParameter = new WebRequestParameter("steamid", steamId.ToString()); requestParameters.Add(steamIdParameter); WebRequestParameter appIdParameter = new WebRequestParameter("appid", appId.ToString()); requestParameters.Add(appIdParameter); if (!String.IsNullOrEmpty(language)) { WebRequestParameter languageParameter = new WebRequestParameter("l", language); requestParameters.Add(languageParameter); } JObject data = await PerformSteamRequestAsync("ISteamUserStats", "GetPlayerAchievements", 1, requestParameters); try { UserAchievements playerStats = new UserAchievements(); foreach (JProperty responseProperty in data["playerstats"]) { if (responseProperty.Name == "steamID") playerStats.SteamID = Convert.ToInt64(responseProperty.Value.ToString()); else if (responseProperty.Name == "gameName") playerStats.GameName = responseProperty.Value.ToString(); else if (responseProperty.Name == "achievements") { foreach (JObject achievementObject in data["playerstats"]["achievements"]) { Achievement achievement = new Achievement(); achievement.Name = achievementObject["apiname"].ToString(); if (achievementObject["achieved"].ToString() == "1") achievement.IsAchieved = true; else achievement.IsAchieved = false; playerStats.Achievements.Add(achievement); } } } return playerStats; } catch { throw new Exception(E_JSON_DESERIALIZATION_FAILED); } }
public SteamWebSession(string developerKey) { this.developerKey = new WebRequestParameter("key", developerKey); }
public async Task<Cart> IsValidCartAsync(long steamId, long cartId) { List<WebRequestParameter> requestParameters = new List<WebRequestParameter>(); WebRequestParameter steamIdParameter = new WebRequestParameter("steamid", steamId.ToString()); requestParameters.Add(steamIdParameter); WebRequestParameter cartIdParameter = new WebRequestParameter("gid", cartId.ToString()); requestParameters.Add(cartIdParameter); // send the request and wait for the response JObject data = await PerformSteamRequestAsync("ISteamMicroTxn", "IsValidCart", 1, requestParameters); try { Cart cart = new Cart(); bool isFound = TypeHelper.CreateBoolean(data["result"]["found"]); cart.ID = cartId; cart.IsValid = isFound; if (isFound) cart.OwnerSteamID = TypeHelper.CreateLong(data["result"]["steamidowner"]); return cart; } catch { throw new Exception(E_JSON_DESERIALIZATION_FAILED); } }
public SteamWebAPIUtil(WebRequestParameter developerKey) : base(developerKey) { }
public SteamUserStats(WebRequestParameter developerKey) : base(developerKey) { }