internal async Task <bool> SendTradeOffer(List <SteamItem> inventory, ulong partnerID, string token = null) { if (inventory == null || inventory.Count == 0 || partnerID == 0) { return(false); } string sessionID; if (!Cookie.TryGetValue("sessionid", out sessionID)) { return(false); } List <SteamTradeOfferRequest> trades = new List <SteamTradeOfferRequest>(1 + inventory.Count / Trading.MaxItemsPerTrade); SteamTradeOfferRequest singleTrade = null; for (ushort i = 0; i < inventory.Count; i++) { if (i % Trading.MaxItemsPerTrade == 0) { if (trades.Count >= Trading.MaxTradesPerAccount) { break; } singleTrade = new SteamTradeOfferRequest(); trades.Add(singleTrade); } SteamItem item = inventory[i]; singleTrade.me.assets.Add(new SteamItem() { appid = "753", contextid = "6", amount = item.amount, assetid = item.id }); } string referer = "https://steamcommunity.com/tradeoffer/new"; string request = referer + "/send"; foreach (SteamTradeOfferRequest trade in trades) { Dictionary <string, string> data = new Dictionary <string, string>(6) { { "sessionid", sessionID }, { "serverid", "1" }, { "partner", partnerID.ToString() }, { "tradeoffermessage", "Sent by ASF" }, { "json_tradeoffer", JsonConvert.SerializeObject(trade) }, { "trade_offer_create_params", string.IsNullOrEmpty(token) ? "" : string.Format("{{ \"trade_offer_access_token\":\"{0}\" }}", token) } // TODO: This should be rewrote }; HttpResponseMessage response = null; for (byte i = 0; i < WebBrowser.MaxRetries && response == null; i++) { response = await WebBrowser.UrlPost(request, data, Cookie, referer).ConfigureAwait(false); } if (response == null) { Logging.LogGenericWTF("Request failed even after " + WebBrowser.MaxRetries + " tries", Bot.BotName); return(false); } } return(true); }
internal async Task<bool> SendTradeOffer(List<SteamItem> inventory, ulong partnerID, string token = null) { if (inventory == null || inventory.Count == 0 || partnerID == 0) { return false; } string sessionID; if (!Cookie.TryGetValue("sessionid", out sessionID)) { return false; } List<SteamTradeOfferRequest> trades = new List<SteamTradeOfferRequest>(); SteamTradeOfferRequest singleTrade = null; for (ushort i = 0; i < inventory.Count; i++) { if (i % Trading.MaxItemsPerTrade == 0) { if (trades.Count >= Trading.MaxTradesPerAccount) { break; } singleTrade = new SteamTradeOfferRequest(); trades.Add(singleTrade); } SteamItem item = inventory[i]; singleTrade.me.assets.Add(new SteamItem() { appid = "753", contextid = "6", amount = item.amount, assetid = item.id }); } string referer = "https://steamcommunity.com/tradeoffer/new"; string request = referer + "/send"; foreach (SteamTradeOfferRequest trade in trades) { Dictionary<string, string> data = new Dictionary<string, string>() { {"sessionid", sessionID}, {"serverid", "1"}, {"partner", partnerID.ToString()}, {"tradeoffermessage", "Sent by ASF"}, {"json_tradeoffer", JsonConvert.SerializeObject(trade)}, {"trade_offer_create_params", string.IsNullOrEmpty(token) ? "" : string.Format("{{ \"trade_offer_access_token\":\"{0}\" }}", token)} // TODO: This should be rewrote }; HttpResponseMessage response = null; for (byte i = 0; i < WebBrowser.MaxRetries && response == null; i++) { response = await WebBrowser.UrlPost(request, data, Cookie, referer).ConfigureAwait(false); } if (response == null) { Logging.LogGenericWTF(Bot.BotName, "Request failed even after " + WebBrowser.MaxRetries + " tries"); return false; } } return true; }