/// <summary> /// Sends a trade offer to the specified recipient that's not on your friends list using the trade url. If is not the case, use SendTradeOffer function. /// </summary> /// <param name="partnerSid">The SteamId64 (ulong) of the person to send the offer to.</param> /// <param name="token">The token part from the recipient's trade url. Example: a1b2cdEF</param> /// <param name="tradeoffermessage">An optional message to be sent with the offer. Can be null.</param> /// <param name="serverid">Almost always 1, not quite sure what other numbers do.</param> /// <param name="offer">A TradeOffer object containing the trade parameters.</param> /// <param name="container">Auth Cookies MUST be passed here, the function will fail if not.</param> /// <returns>A SendOfferResponse object.</returns> public SendOfferResponse SendTradeOfferWithLink(ulong partnerSid, string token, string tradeoffermessage, string serverid, TradeOffer offer, CookieContainer container) { const string url = "https://steamcommunity.com/tradeoffer/new/send"; container.Add(new Cookie("bCompletedTradeOfferTutorial", "true") { Domain = "steamcommunity.com" }); string sessionid = (from Cookie cookie in container.GetCookies(new Uri("https://steamcommunity.com")) where cookie.Name == "sessionid" select cookie.Value).FirstOrDefault(); CEconTradeOffer offerToken = new CEconTradeOffer { TradeOfferAccessToken = token }; var data = new Dictionary<string, string> { {"sessionid", sessionid}, {"serverid", serverid}, {"partner", partnerSid.ToString()}, {"tradeoffermessage", tradeoffermessage}, {"json_tradeoffer", JsonConvert.SerializeObject(offer)}, {"captcha", string.Empty}, {"trade_offer_create_params", JsonConvert.SerializeObject(offerToken)} }; return _web.RetryFetch(TimeSpan.FromSeconds(10), 20, url, "POST", data, container, false, string.Format("https://steamcommunity.com/tradeoffer/new/?partner={0}&token={1}", IdConversions.UlongToAccountId(partnerSid), token)) .DeserializeJson<SendOfferResponse>(); }
/// <summary> /// Marks the inUse bool of the assets specified in the trade offer. /// </summary> /// <param name="offer">TradeOffer to mark.</param> /// <param name="inUse">Bool to set.</param> public void MarkMyAssets(TradeOffer offer, bool inUse) { foreach (var asset in offer.Me.Assets) Inventories[Convert.ToUInt32(asset.AppId)].MarkAsset(asset, inUse); }
/// <summary> /// Modifies an existing trade offer. /// </summary> /// <param name="partnerSid">The SteamId64 (ulong) of the person whose offer will be modified.</param> /// <param name="tradeoffermessage">An otpional message to be sent with the trade offer. Can be null.</param> /// <param name="serverid">Almost always 1, not quite sure what other numbers do.</param> /// <param name="tradeofferidCountered">The TradeId of the offer to counter or modify.</param> /// <param name="offer">A TradeOffer object containing the trade parameters. </param> /// <param name="container">Auth Cookies MUST be passed here, the function will fail if not.</param> /// <returns>A SendOfferResponse object.</returns> public SendOfferResponse ModifyTradeOffer(ulong partnerSid, string tradeoffermessage, string serverid, uint tradeofferidCountered, TradeOffer offer, CookieContainer container) { const string url = "https://steamcommunity.com/tradeoffer/new/send"; container.Add(new Cookie("bCompletedTradeOfferTutorial", "true") { Domain = "steamcommunity.com" }); string sessionid = (from Cookie cookie in container.GetCookies(new Uri("https://steamcommunity.com")) where cookie.Name == "sessionid" select cookie.Value).FirstOrDefault(); var data = new Dictionary<string, string> { {"sessionid", sessionid}, {"serverid", serverid}, {"partner", partnerSid.ToString()}, {"tradeoffermessage", tradeoffermessage}, {"json_tradeoffer", JsonConvert.SerializeObject(offer)}, {"captcha", string.Empty}, {"trade_offer_create_params", "{}"}, {"tradeofferid_countered", tradeofferidCountered.ToString()} }; return _web.Fetch(url, "POST", data, container, false, "https://steamcommunity.com/tradeoffer/" + tradeofferidCountered + "/") .DeserializeJson<SendOfferResponse>(); }
/// <summary> /// Sends a trade offer to the specified recipient. /// </summary> /// <param name="partnerSid">The SteamId64 (ulong) of the person to send the offer to.</param> /// <param name="container">Auth Cookies MUST be passed here, the function will fail if not.</param> /// <param name="tradeoffermessage">An optional message to be sent with the offer. Can be null.</param> /// <param name="serverid">Almost always 1, not quite sure what other numbers do.</param> /// <param name="offer">A TradeOffer object containing the trade parameters.</param> /// <returns>A SendOfferResponse object.</returns> public SendOfferResponse SendTradeOffer(ulong partnerSid, CookieContainer container, string tradeoffermessage, string serverid, TradeOffer offer) { const string url = "https://steamcommunity.com/tradeoffer/new/send"; container.Add(new Cookie("bCompletedTradeOfferTutorial", "true") {Domain = "steamcommunity.com"}); var data = new Dictionary<string, string> { {"sessionid", Web.Web.SessionId}, {"serverid", serverid}, {"partner", partnerSid.ToString()}, {"tradeoffermessage", tradeoffermessage}, {"json_tradeoffer", JsonConvert.SerializeObject(offer)}, {"captcha", string.Empty}, {"trade_offer_create_params", "{}"} }; return JsonConvert.DeserializeObject<SendOfferResponse>(_web.Fetch(url, "POST", data, container, false, "https://steamcommunity.com/tradeoffer/new/?partner=" + SteamIdOperations.ConvertSteamIdToAccountId(SteamIdOperations.ConvertUlongToSteamId(partnerSid))).ReadStream()); }
/// <summary> /// Modifies an existing trade offer. /// </summary> /// <param name="partnerSid">The SteamId64 (ulong) of the person whose offer will be modified.</param> /// <param name="tradeoffermessage">An otpional message to be sent with the trade offer. Can be null.</param> /// <param name="serverid">Almost always 1, not quite sure what other numbers do.</param> /// <param name="tradeofferidCountered">The TradeId of the offer to counter or modify.</param> /// <param name="offer">A TradeOffer object containing the trade parameters. </param> /// <param name="container">Auth Cookies MUST be passed here, the function will fail if not.</param> /// <returns>A SendOfferResponse object.</returns> public SendOfferResponse ModifyTradeOffer(ulong partnerSid, string tradeoffermessage, string serverid, uint tradeofferidCountered, TradeOffer offer, CookieContainer container) { const string url = "https://steamcommunity.com/tradeoffer/new/send"; container.Add(new Cookie("bCompletedTradeOfferTutorial", "true") { Domain = "steamcommunity.com" }); string sessionid = (from Cookie cookie in container.GetCookies(new Uri("https://steamcommunity.com")) where cookie.Name == "sessionid" select cookie.Value).FirstOrDefault(); var data = new Dictionary <string, string> { { "sessionid", sessionid }, { "serverid", serverid }, { "partner", partnerSid.ToString() }, { "tradeoffermessage", tradeoffermessage }, { "json_tradeoffer", JsonConvert.SerializeObject(offer) }, { "captcha", string.Empty }, { "trade_offer_create_params", "{}" }, { "tradeofferid_countered", tradeofferidCountered.ToString() } }; return(_web.Fetch(url, "POST", data, container, false, "https://steamcommunity.com/tradeoffer/" + tradeofferidCountered + "/") .DeserializeJson <SendOfferResponse>()); }
/// <summary> /// Sends a trade offer to the specified recipient. /// </summary> /// <param name="partnerSid">The SteamId64 (ulong) of the person to send the offer to.</param> /// <param name="tradeoffermessage">An optional message to be sent with the offer. Can be null.</param> /// <param name="serverid">Almost always 1, not quite sure what other numbers do.</param> /// <param name="offer">A TradeOffer object containing the trade parameters.</param> /// <param name="container">Auth Cookies MUST be passed here, the function will fail if not.</param> /// <returns>A SendOfferResponse object.</returns> public SendOfferResponse SendTradeOffer(ulong partnerSid, string tradeoffermessage, string serverid, TradeOffer offer, CookieContainer container) { const string url = "https://steamcommunity.com/tradeoffer/new/send"; container.Add(new Cookie("bCompletedTradeOfferTutorial", "true") {Domain = "steamcommunity.com"}); string sessionid = (from Cookie cookie in container.GetCookies(new Uri("https://steamcommunity.com")) where cookie.Name == "sessionid" select cookie.Value).FirstOrDefault(); var data = new Dictionary<string, string> { {"sessionid", sessionid}, {"serverid", serverid}, {"partner", partnerSid.ToString()}, {"tradeoffermessage", tradeoffermessage}, {"json_tradeoffer", JsonConvert.SerializeObject(offer)}, {"captcha", string.Empty}, {"trade_offer_create_params", "{}"} }; return JsonConvert.DeserializeObject<SendOfferResponse>( _web.RetryFetch(TimeSpan.FromSeconds(10), 20, url, "POST", data, container, false, "https://steamcommunity.com/tradeoffer/new/?partner=" + SteamIdOperations.ConvertSteamIdToAccountId(SteamIdOperations.ConvertUlongToSteamId(partnerSid))) .ReadStream()); }
private static void PollOffers() { Console.WriteLine("Polling offers every ten seconds."); bool isPolling = true; var offerHandler = new EconServiceHandler(_config.ApiKey); var marketHandler = new MarketHandler(); Inventory csgoInventory = new Inventory(_account.SteamId, 730); marketHandler.EligibilityCheck(_account.SteamId, _account.AuthContainer); //required to perform trades (?). Checks to see whether or not we're allowed to trade. // ReSharper disable once ConditionIsAlwaysTrueOrFalse // ReSharper disable once LoopVariableIsNeverChangedInsideLoop while (isPolling) //permanent loop, can be changed { Thread.Sleep(10000); var recData = new Dictionary<string, string> { {"get_received_offers", "1"}, {"active_only", "1"}, {"time_historical_cutoff", "999999999999"} //arbitrarily high number to retrieve latest offers }; var offers = offerHandler.GetTradeOffers(recData).TradeOffersReceived; if (offers == null) continue; foreach (CEconTradeOffer cEconTradeOffer in offers) { TradeOffer offer = new TradeOffer(); offer.Them.Assets = cEconTradeOffer.ItemsToReceive; offer.Me.Assets.Add(csgoInventory.Items.First().Value.Items.First().ToCEconAsset(730)); offerHandler.ModifyTradeOffer(IdConversions.AccountIdToUlong(cEconTradeOffer.AccountIdOther), "Here you go!", "1", cEconTradeOffer.TradeOfferId, offer, _account.AuthContainer); } } }