From 4e86d21ef8e924b15b5e51b2ca788485c9aefe50 Mon Sep 17 00:00:00 2001 From: JustArchi Date: Fri, 22 Apr 2016 17:50:01 +0200 Subject: [PATCH] Misc --- ArchiSteamFarm/ArchiWebHandler.cs | 20 ++++-- ArchiSteamFarm/JSON/Steam.cs | 112 ++++++++++++++---------------- ArchiSteamFarm/Trading.cs | 2 +- ArchiSteamFarm/Utilities.cs | 4 ++ ArchiSteamFarm/WebBrowser.cs | 18 ++--- 5 files changed, 83 insertions(+), 73 deletions(-) diff --git a/ArchiSteamFarm/ArchiWebHandler.cs b/ArchiSteamFarm/ArchiWebHandler.cs index f69dc59fe..3724b88e7 100644 --- a/ArchiSteamFarm/ArchiWebHandler.cs +++ b/ArchiSteamFarm/ArchiWebHandler.cs @@ -179,9 +179,11 @@ namespace ArchiSteamFarm { } internal async Task IsLoggedIn() { + string request = SteamCommunityURL + "/my/profile"; + HtmlDocument htmlDocument = null; for (byte i = 0; i < WebBrowser.MaxRetries && htmlDocument == null; i++) { - htmlDocument = await WebBrowser.UrlGetToHtmlDocument(SteamCommunityURL + "/my/profile").ConfigureAwait(false); + htmlDocument = await WebBrowser.UrlGetToHtmlDocument(request).ConfigureAwait(false); } if (htmlDocument == null) { @@ -459,11 +461,13 @@ namespace ArchiSteamFarm { HashSet result = new HashSet(); + string request = SteamCommunityURL + "/my/inventory/json/" + Steam.Item.SteamAppID + "/" + Steam.Item.SteamContextID + "?trading=1&start="; + ushort nextPage = 0; while (true) { JObject jObject = null; for (byte i = 0; i < WebBrowser.MaxRetries && jObject == null; i++) { - jObject = await WebBrowser.UrlGetToJObject(SteamCommunityURL + "/my/inventory/json/" + Steam.Item.SteamAppID + "/" + Steam.Item.SteamContextID + "?trading=1&start=" + nextPage).ConfigureAwait(false); + jObject = await WebBrowser.UrlGetToJObject(request + nextPage).ConfigureAwait(false); } if (jObject == null) { @@ -640,9 +644,11 @@ namespace ArchiSteamFarm { return null; } + string request = SteamCommunityURL + "/my/badges?p=" + page; + HtmlDocument htmlDocument = null; for (byte i = 0; i < WebBrowser.MaxRetries && htmlDocument == null; i++) { - htmlDocument = await WebBrowser.UrlGetToHtmlDocument(SteamCommunityURL + "/my/badges?p=" + page).ConfigureAwait(false); + htmlDocument = await WebBrowser.UrlGetToHtmlDocument(request).ConfigureAwait(false); } if (htmlDocument == null) { @@ -662,9 +668,11 @@ namespace ArchiSteamFarm { return null; } + string request = SteamCommunityURL + "/my/gamecards/" + appID; + HtmlDocument htmlDocument = null; for (byte i = 0; i < WebBrowser.MaxRetries && htmlDocument == null; i++) { - htmlDocument = await WebBrowser.UrlGetToHtmlDocument(SteamCommunityURL + "/my/gamecards/" + appID).ConfigureAwait(false); + htmlDocument = await WebBrowser.UrlGetToHtmlDocument(request).ConfigureAwait(false); } if (htmlDocument == null) { @@ -680,9 +688,11 @@ namespace ArchiSteamFarm { return false; } + string request = SteamCommunityURL + "/my/inventory"; + bool result = false; for (byte i = 0; i < WebBrowser.MaxRetries && !result; i++) { - result = await WebBrowser.UrlGet(SteamCommunityURL + "/my/inventory").ConfigureAwait(false); + result = await WebBrowser.UrlGet(request).ConfigureAwait(false); } if (!result) { diff --git a/ArchiSteamFarm/JSON/Steam.cs b/ArchiSteamFarm/JSON/Steam.cs index 20fe6e0a5..7fea2cbc3 100644 --- a/ArchiSteamFarm/JSON/Steam.cs +++ b/ArchiSteamFarm/JSON/Steam.cs @@ -110,7 +110,7 @@ namespace ArchiSteamFarm { } [JsonProperty(PropertyName = "id", Required = Required.DisallowNull)] - internal string id { + internal string ID { get { return AssetIDString; } set { AssetIDString = value; } } @@ -249,81 +249,77 @@ namespace ArchiSteamFarm { } } - internal bool IsSteamCardsOnlyTrade { - get { - foreach (Item item in ItemsToGive) { - if (item.AppID != Item.SteamAppID || item.ContextID != Item.SteamContextID || (item.Type != Item.EType.FoilTradingCard && item.Type != Item.EType.TradingCard)) { - return false; - } + internal bool IsSteamCardsOnlyTrade() { + foreach (Item item in ItemsToGive) { + if (item.AppID != Item.SteamAppID || item.ContextID != Item.SteamContextID || (item.Type != Item.EType.FoilTradingCard && item.Type != Item.EType.TradingCard)) { + return false; } - - foreach (Item item in ItemsToReceive) { - if (item.AppID != Item.SteamAppID || item.ContextID != Item.SteamContextID || (item.Type != Item.EType.FoilTradingCard && item.Type != Item.EType.TradingCard)) { - return false; - } - } - - return true; } + + foreach (Item item in ItemsToReceive) { + if (item.AppID != Item.SteamAppID || item.ContextID != Item.SteamContextID || (item.Type != Item.EType.FoilTradingCard && item.Type != Item.EType.TradingCard)) { + return false; + } + } + + return true; } - internal bool IsPotentiallyDupesTrade { - get { - Dictionary> ItemsToGivePerGame = new Dictionary>(); - foreach (Item item in ItemsToGive) { - Dictionary ItemsPerType; - if (!ItemsToGivePerGame.TryGetValue(item.RealAppID, out ItemsPerType)) { - ItemsPerType = new Dictionary(); - ItemsPerType[item.Type] = item.Amount; - ItemsToGivePerGame[item.RealAppID] = ItemsPerType; + internal bool IsPotentiallyDupesTrade() { + Dictionary> ItemsToGivePerGame = new Dictionary>(); + foreach (Item item in ItemsToGive) { + Dictionary ItemsPerType; + if (!ItemsToGivePerGame.TryGetValue(item.RealAppID, out ItemsPerType)) { + ItemsPerType = new Dictionary(); + ItemsPerType[item.Type] = item.Amount; + ItemsToGivePerGame[item.RealAppID] = ItemsPerType; + } else { + uint amount; + if (ItemsPerType.TryGetValue(item.Type, out amount)) { + ItemsPerType[item.Type] = amount + item.Amount; } else { - uint amount; - if (ItemsPerType.TryGetValue(item.Type, out amount)) { - ItemsPerType[item.Type] = amount + item.Amount; - } else { - ItemsPerType[item.Type] = item.Amount; - } + ItemsPerType[item.Type] = item.Amount; } } + } - Dictionary> ItemsToReceivePerGame = new Dictionary>(); - foreach (Item item in ItemsToReceive) { - Dictionary ItemsPerType; - if (!ItemsToReceivePerGame.TryGetValue(item.RealAppID, out ItemsPerType)) { - ItemsPerType = new Dictionary(); - ItemsPerType[item.Type] = item.Amount; - ItemsToReceivePerGame[item.RealAppID] = ItemsPerType; + Dictionary> ItemsToReceivePerGame = new Dictionary>(); + foreach (Item item in ItemsToReceive) { + Dictionary ItemsPerType; + if (!ItemsToReceivePerGame.TryGetValue(item.RealAppID, out ItemsPerType)) { + ItemsPerType = new Dictionary(); + ItemsPerType[item.Type] = item.Amount; + ItemsToReceivePerGame[item.RealAppID] = ItemsPerType; + } else { + uint amount; + if (ItemsPerType.TryGetValue(item.Type, out amount)) { + ItemsPerType[item.Type] = amount + item.Amount; } else { - uint amount; - if (ItemsPerType.TryGetValue(item.Type, out amount)) { - ItemsPerType[item.Type] = amount + item.Amount; - } else { - ItemsPerType[item.Type] = item.Amount; - } + ItemsPerType[item.Type] = item.Amount; } } + } - // Ensure that amount per type and per game matches - foreach (KeyValuePair> ItemsPerGame in ItemsToGivePerGame) { - Dictionary otherItemsPerType; - if (!ItemsToReceivePerGame.TryGetValue(ItemsPerGame.Key, out otherItemsPerType)) { + // Ensure that amount per type and per game matches + foreach (KeyValuePair> ItemsPerGame in ItemsToGivePerGame) { + Dictionary otherItemsPerType; + if (!ItemsToReceivePerGame.TryGetValue(ItemsPerGame.Key, out otherItemsPerType)) { + return false; + } + + foreach (KeyValuePair ItemsPerType in ItemsPerGame.Value) { + uint otherAmount; + if (!otherItemsPerType.TryGetValue(ItemsPerType.Key, out otherAmount)) { return false; } - foreach (KeyValuePair ItemsPerType in ItemsPerGame.Value) { - uint otherAmount; - if (!otherItemsPerType.TryGetValue(ItemsPerType.Key, out otherAmount)) { - return false; - } - - if (ItemsPerType.Value != otherAmount) { - return false; - } + if (ItemsPerType.Value != otherAmount) { + return false; } } - - return true; } + + return true; } } diff --git a/ArchiSteamFarm/Trading.cs b/ArchiSteamFarm/Trading.cs index ac5459f1e..e5dae8e87 100644 --- a/ArchiSteamFarm/Trading.cs +++ b/ArchiSteamFarm/Trading.cs @@ -154,7 +154,7 @@ namespace ArchiSteamFarm { } // Rule 2 - We always trade steam cards and only for the same set - if (!tradeOffer.IsSteamCardsOnlyTrade || !tradeOffer.IsPotentiallyDupesTrade) { + if (!tradeOffer.IsSteamCardsOnlyTrade() || !tradeOffer.IsPotentiallyDupesTrade()) { return false; } diff --git a/ArchiSteamFarm/Utilities.cs b/ArchiSteamFarm/Utilities.cs index 109bb191e..c352fd387 100644 --- a/ArchiSteamFarm/Utilities.cs +++ b/ArchiSteamFarm/Utilities.cs @@ -33,6 +33,10 @@ namespace ArchiSteamFarm { internal static void Forget(this Task task) { } internal static Task ForEachAsync(this IEnumerable sequence, Func action) { + if (action == null) { + return Task.FromResult(true); + } + return Task.WhenAll(sequence.Select(action)); } diff --git a/ArchiSteamFarm/WebBrowser.cs b/ArchiSteamFarm/WebBrowser.cs index 693d98f5c..ab468fbda 100644 --- a/ArchiSteamFarm/WebBrowser.cs +++ b/ArchiSteamFarm/WebBrowser.cs @@ -141,10 +141,8 @@ namespace ArchiSteamFarm { return null; } - content = WebUtility.HtmlDecode(content); HtmlDocument htmlDocument = new HtmlDocument(); - htmlDocument.LoadHtml(content); - + htmlDocument.LoadHtml(WebUtility.HtmlDecode(content)); return htmlDocument; } @@ -239,15 +237,17 @@ namespace ArchiSteamFarm { } } - if (responseMessage == null || !responseMessage.IsSuccessStatusCode) { + if (responseMessage == null) { + return null; + } + + if (!responseMessage.IsSuccessStatusCode) { if (Debugging.IsDebugBuild || Program.GlobalConfig.Debug) { Logging.LogGenericError("Request: " + request + " failed!", Identifier); - if (responseMessage != null) { - Logging.LogGenericError("Status code: " + responseMessage.StatusCode, Identifier); - Logging.LogGenericError("Content: " + Environment.NewLine + await responseMessage.Content.ReadAsStringAsync().ConfigureAwait(false), Identifier); - responseMessage.Dispose(); - } + Logging.LogGenericError("Status code: " + responseMessage.StatusCode, Identifier); + Logging.LogGenericError("Content: " + Environment.NewLine + await responseMessage.Content.ReadAsStringAsync().ConfigureAwait(false), Identifier); } + responseMessage.Dispose(); return null; }