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);
            }
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
        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);
            }
        }
Esempio n. 6
0
        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);
            }
        }
Esempio n. 7
0
        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);
            }
        }
Esempio n. 8
0
 public SteamApps(WebRequestParameter developerKey)
     : base(developerKey)
 {
 }
Esempio n. 9
0
        //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);
            }
        }
Esempio n. 10
0
        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);
            }
        }
Esempio n. 11
0
 public SteamWebRequest(WebRequestParameter developerKey)
 {
     this.developerKey = developerKey;
 }
Esempio n. 12
0
        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)
 {
 }
Esempio n. 14
0
        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);
            }
        }
Esempio n. 15
0
 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);
            }
        }
Esempio n. 17
0
 public SteamWebAPIUtil(WebRequestParameter developerKey)
     : base(developerKey)
 {
 }
Esempio n. 18
0
 public SteamUserStats(WebRequestParameter developerKey)
     : base(developerKey)
 {
 }