Skip to content

Commit 8630cc4

Browse files
committed
Small WebBrowser enhancements, closes #212
1 parent 3683195 commit 8630cc4

File tree

2 files changed

+34
-13
lines changed

2 files changed

+34
-13
lines changed

ArchiSteamFarm/ArchiWebHandler.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -717,7 +717,7 @@ internal async Task<bool> MarkInventory() {
717717

718718
bool result = false;
719719
for (byte i = 0; i < WebBrowser.MaxRetries && !result; i++) {
720-
result = await WebBrowser.UrlGet(request).ConfigureAwait(false);
720+
result = await WebBrowser.UrlHead(request).ConfigureAwait(false);
721721
}
722722

723723
if (!result) {
@@ -731,18 +731,17 @@ internal async Task<bool> MarkInventory() {
731731
private async Task<bool?> IsLoggedIn() {
732732
string request = SteamCommunityURL + "/my/profile";
733733

734-
HtmlDocument htmlDocument = null;
735-
for (byte i = 0; i < WebBrowser.MaxRetries && htmlDocument == null; i++) {
736-
htmlDocument = await WebBrowser.UrlGetToHtmlDocument(request).ConfigureAwait(false);
734+
Uri uri = null;
735+
for (byte i = 0; i < WebBrowser.MaxRetries && uri == null; i++) {
736+
uri = await WebBrowser.UrlHeadToUri(request).ConfigureAwait(false);
737737
}
738738

739-
if (htmlDocument == null) {
739+
if (uri == null) {
740740
Logging.LogGenericWTF("Request failed even after " + WebBrowser.MaxRetries + " tries", Bot.BotName);
741741
return null;
742742
}
743743

744-
HtmlNode htmlNode = htmlDocument.DocumentNode.SelectSingleNode("//span[@id='account_pulldown']");
745-
return htmlNode != null;
744+
return !uri.AbsolutePath.StartsWith("/login", StringComparison.Ordinal);
746745
}
747746

748747
private async Task<bool> RefreshSessionIfNeeded() {

ArchiSteamFarm/WebBrowser.cs

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,23 +83,27 @@ internal WebBrowser(string identifier) {
8383
HttpClient.DefaultRequestHeaders.UserAgent.ParseAdd(DefaultUserAgent);
8484
}
8585

86-
internal async Task<bool> UrlGet(string request, string referer = null) {
86+
internal async Task<bool> UrlHead(string request, string referer = null) {
8787
if (string.IsNullOrEmpty(request)) {
8888
return false;
8989
}
9090

91-
using (HttpResponseMessage response = await UrlGetToResponse(request, referer).ConfigureAwait(false)) {
91+
using (HttpResponseMessage response = await UrlHeadToResponse(request, referer).ConfigureAwait(false)) {
9292
return response != null;
9393
}
9494
}
9595

96-
internal async Task<bool> UrlPost(string request, Dictionary<string, string> data = null, string referer = null) {
96+
internal async Task<Uri> UrlHeadToUri(string request, string referer = null) {
9797
if (string.IsNullOrEmpty(request)) {
98-
return false;
98+
return null;
9999
}
100100

101-
using (HttpResponseMessage response = await UrlPostToResponse(request, data, referer).ConfigureAwait(false)) {
102-
return response != null;
101+
using (HttpResponseMessage response = await UrlHeadToResponse(request, referer).ConfigureAwait(false)) {
102+
if (response == null) {
103+
return null;
104+
}
105+
106+
return response.RequestMessage.RequestUri;
103107
}
104108
}
105109

@@ -190,6 +194,16 @@ internal async Task<XmlDocument> UrlGetToXML(string request, string referer = nu
190194
return xmlDocument;
191195
}
192196

197+
internal async Task<bool> UrlPost(string request, Dictionary<string, string> data = null, string referer = null) {
198+
if (string.IsNullOrEmpty(request)) {
199+
return false;
200+
}
201+
202+
using (HttpResponseMessage response = await UrlPostToResponse(request, data, referer).ConfigureAwait(false)) {
203+
return response != null;
204+
}
205+
}
206+
193207
private async Task<HttpResponseMessage> UrlGetToResponse(string request, string referer = null) {
194208
if (string.IsNullOrEmpty(request)) {
195209
return null;
@@ -198,6 +212,14 @@ private async Task<HttpResponseMessage> UrlGetToResponse(string request, string
198212
return await UrlRequest(request, HttpMethod.Get, null, referer).ConfigureAwait(false);
199213
}
200214

215+
private async Task<HttpResponseMessage> UrlHeadToResponse(string request, string referer = null) {
216+
if (string.IsNullOrEmpty(request)) {
217+
return null;
218+
}
219+
220+
return await UrlRequest(request, HttpMethod.Head, null, referer).ConfigureAwait(false);
221+
}
222+
201223
private async Task<HttpResponseMessage> UrlPostToResponse(string request, Dictionary<string, string> data = null, string referer = null) {
202224
if (string.IsNullOrEmpty(request)) {
203225
return null;

0 commit comments

Comments
 (0)