mirror of
https://github.com/JustArchiNET/ArchiSteamFarm.git
synced 2026-01-01 14:10:53 +00:00
Rewrite WebBrowser errors logic, again
Maybe THIS TIME after 7 years it'll finally do what I need from it. TL;DR, if anybody is insane enough to return client/server errors, and expects HtmlDocument or other Object to actually be null, it must be explicitly specified now with allow, to work like 200-OK, where we return only stuff that actually parses
This commit is contained in:
@@ -173,7 +173,7 @@ public sealed class ArchiWebHandler : IDisposable {
|
||||
await Task.Delay(rateLimitingDelay).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
response = await UrlGetToJsonObjectWithSession<InventoryResponse>(request, requestOptions: WebBrowser.ERequestOptions.ReturnServerErrors, rateLimitingDelay: rateLimitingDelay).ConfigureAwait(false);
|
||||
response = await UrlGetToJsonObjectWithSession<InventoryResponse>(request, requestOptions: WebBrowser.ERequestOptions.ReturnServerErrors | WebBrowser.ERequestOptions.AllowInvalidBodyOnErrors, rateLimitingDelay: rateLimitingDelay).ConfigureAwait(false);
|
||||
|
||||
if (response == null) {
|
||||
throw new HttpRequestException(string.Format(CultureInfo.CurrentCulture, Strings.ErrorObjectIsNull, nameof(response)));
|
||||
@@ -427,7 +427,7 @@ public sealed class ArchiWebHandler : IDisposable {
|
||||
ObjectResponse<TradeOfferSendResponse>? response = null;
|
||||
|
||||
for (byte i = 0; (i < WebBrowser.MaxTries) && (response == null); i++) {
|
||||
response = await UrlPostToJsonObjectWithSession<TradeOfferSendResponse>(request, data: data, referer: referer, requestOptions: WebBrowser.ERequestOptions.ReturnServerErrors).ConfigureAwait(false);
|
||||
response = await UrlPostToJsonObjectWithSession<TradeOfferSendResponse>(request, data: data, referer: referer, requestOptions: WebBrowser.ERequestOptions.ReturnServerErrors | WebBrowser.ERequestOptions.AllowInvalidBodyOnErrors).ConfigureAwait(false);
|
||||
|
||||
if (response == null) {
|
||||
return (false, mobileTradeOfferIDs);
|
||||
@@ -1292,7 +1292,7 @@ public sealed class ArchiWebHandler : IDisposable {
|
||||
ObjectResponse<TradeOfferAcceptResponse>? response = null;
|
||||
|
||||
for (byte i = 0; (i < WebBrowser.MaxTries) && (response == null); i++) {
|
||||
response = await UrlPostToJsonObjectWithSession<TradeOfferAcceptResponse>(request, data: data, referer: referer, requestOptions: WebBrowser.ERequestOptions.ReturnServerErrors).ConfigureAwait(false);
|
||||
response = await UrlPostToJsonObjectWithSession<TradeOfferAcceptResponse>(request, data: data, referer: referer, requestOptions: WebBrowser.ERequestOptions.ReturnServerErrors | WebBrowser.ERequestOptions.AllowInvalidBodyOnErrors).ConfigureAwait(false);
|
||||
|
||||
if (response == null) {
|
||||
return (false, false);
|
||||
@@ -1329,7 +1329,7 @@ public sealed class ArchiWebHandler : IDisposable {
|
||||
{ "ajax", "true" }
|
||||
};
|
||||
|
||||
ObjectResponse<JToken>? response = await UrlPostToJsonObjectWithSession<JToken>(request, data: data, requestOptions: WebBrowser.ERequestOptions.ReturnClientErrors | WebBrowser.ERequestOptions.ReturnServerErrors).ConfigureAwait(false);
|
||||
ObjectResponse<JToken>? response = await UrlPostToJsonObjectWithSession<JToken>(request, data: data, requestOptions: WebBrowser.ERequestOptions.ReturnClientErrors | WebBrowser.ERequestOptions.ReturnServerErrors | WebBrowser.ERequestOptions.AllowInvalidBodyOnErrors).ConfigureAwait(false);
|
||||
|
||||
if (response == null) {
|
||||
return (EResult.Fail, EPurchaseResultDetail.Timeout);
|
||||
|
||||
@@ -140,27 +140,21 @@ public sealed class WebBrowser : IDisposable {
|
||||
|
||||
await using (response.ConfigureAwait(false)) {
|
||||
if (response.StatusCode.IsRedirectionCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnRedirections)) {
|
||||
return new BinaryResponse(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnRedirections)) {
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (response.StatusCode.IsClientErrorCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnClientErrors)) {
|
||||
return new BinaryResponse(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnClientErrors)) {
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (response.StatusCode.IsServerErrorCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnServerErrors)) {
|
||||
return new BinaryResponse(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnServerErrors)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (response.Content == null) {
|
||||
@@ -256,27 +250,21 @@ public sealed class WebBrowser : IDisposable {
|
||||
|
||||
await using (response.ConfigureAwait(false)) {
|
||||
if (response.StatusCode.IsRedirectionCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnRedirections)) {
|
||||
return new HtmlDocumentResponse(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnRedirections)) {
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (response.StatusCode.IsClientErrorCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnClientErrors)) {
|
||||
return new HtmlDocumentResponse(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnClientErrors)) {
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (response.StatusCode.IsServerErrorCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnServerErrors)) {
|
||||
return new HtmlDocumentResponse(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnServerErrors)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (response.Content == null) {
|
||||
@@ -328,27 +316,21 @@ public sealed class WebBrowser : IDisposable {
|
||||
|
||||
await using (response.ConfigureAwait(false)) {
|
||||
if (response.StatusCode.IsRedirectionCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnRedirections)) {
|
||||
return new ObjectResponse<T>(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnRedirections)) {
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (response.StatusCode.IsClientErrorCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnClientErrors)) {
|
||||
return new ObjectResponse<T>(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnClientErrors)) {
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (response.StatusCode.IsServerErrorCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnServerErrors)) {
|
||||
return new ObjectResponse<T>(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnServerErrors)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (response.Content == null) {
|
||||
@@ -420,27 +402,21 @@ public sealed class WebBrowser : IDisposable {
|
||||
}
|
||||
|
||||
if (response.StatusCode.IsRedirectionCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnRedirections)) {
|
||||
return new StreamResponse(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnRedirections)) {
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (response.StatusCode.IsClientErrorCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnClientErrors)) {
|
||||
return new StreamResponse(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnClientErrors)) {
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (response.StatusCode.IsServerErrorCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnServerErrors)) {
|
||||
return new StreamResponse(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnServerErrors)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
return new StreamResponse(response, await response.Content.ReadAsStreamAsync().ConfigureAwait(false));
|
||||
@@ -476,27 +452,21 @@ public sealed class WebBrowser : IDisposable {
|
||||
}
|
||||
|
||||
if (response.StatusCode.IsRedirectionCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnRedirections)) {
|
||||
return new BasicResponse(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnRedirections)) {
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (response.StatusCode.IsClientErrorCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnClientErrors)) {
|
||||
return new BasicResponse(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnClientErrors)) {
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (response.StatusCode.IsServerErrorCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnServerErrors)) {
|
||||
return new BasicResponse(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnServerErrors)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
return new BasicResponse(response);
|
||||
@@ -532,27 +502,21 @@ public sealed class WebBrowser : IDisposable {
|
||||
}
|
||||
|
||||
if (response.StatusCode.IsRedirectionCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnRedirections)) {
|
||||
return new BasicResponse(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnRedirections)) {
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (response.StatusCode.IsClientErrorCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnClientErrors)) {
|
||||
return new BasicResponse(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnClientErrors)) {
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (response.StatusCode.IsServerErrorCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnServerErrors)) {
|
||||
return new BasicResponse(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnServerErrors)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
return new BasicResponse(response);
|
||||
@@ -590,27 +554,21 @@ public sealed class WebBrowser : IDisposable {
|
||||
|
||||
await using (response.ConfigureAwait(false)) {
|
||||
if (response.StatusCode.IsRedirectionCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnRedirections)) {
|
||||
return new HtmlDocumentResponse(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnRedirections)) {
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (response.StatusCode.IsClientErrorCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnClientErrors)) {
|
||||
return new HtmlDocumentResponse(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnClientErrors)) {
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (response.StatusCode.IsServerErrorCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnServerErrors)) {
|
||||
return new HtmlDocumentResponse(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnServerErrors)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (response.Content == null) {
|
||||
@@ -662,27 +620,21 @@ public sealed class WebBrowser : IDisposable {
|
||||
|
||||
await using (response.ConfigureAwait(false)) {
|
||||
if (response.StatusCode.IsRedirectionCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnRedirections)) {
|
||||
return new ObjectResponse<TResult>(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnRedirections)) {
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (response.StatusCode.IsClientErrorCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnClientErrors)) {
|
||||
return new ObjectResponse<TResult>(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnClientErrors)) {
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (response.StatusCode.IsServerErrorCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnServerErrors)) {
|
||||
return new ObjectResponse<TResult>(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnServerErrors)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (response.Content == null) {
|
||||
@@ -754,27 +706,21 @@ public sealed class WebBrowser : IDisposable {
|
||||
}
|
||||
|
||||
if (response.StatusCode.IsRedirectionCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnRedirections)) {
|
||||
return new StreamResponse(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnRedirections)) {
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (response.StatusCode.IsClientErrorCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnClientErrors)) {
|
||||
return new StreamResponse(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnClientErrors)) {
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (response.StatusCode.IsServerErrorCode()) {
|
||||
if (requestOptions.HasFlag(ERequestOptions.ReturnServerErrors)) {
|
||||
return new StreamResponse(response);
|
||||
if (!requestOptions.HasFlag(ERequestOptions.ReturnServerErrors)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
return new StreamResponse(response, await response.Content.ReadAsStreamAsync().ConfigureAwait(false));
|
||||
|
||||
Reference in New Issue
Block a user