More fixes

This commit is contained in:
JustArchi
2016-06-20 13:45:12 +02:00
parent f13991c2da
commit f6a8d16c85
2 changed files with 33 additions and 6 deletions

View File

@@ -47,6 +47,8 @@ namespace ArchiSteamFarm {
private readonly SemaphoreSlim SessionSemaphore = new SemaphoreSlim(1);
private readonly WebBrowser WebBrowser;
internal bool Ready { get; private set; }
private ulong SteamID;
private DateTime LastSessionRefreshCheck = DateTime.MinValue;
@@ -117,7 +119,9 @@ namespace ArchiSteamFarm {
WebBrowser = new WebBrowser(bot.BotName);
}
internal bool Init(SteamClient steamClient, string webAPIUserNonce, string parentalPin) {
internal void OnDisconnected() => Ready = false;
internal async Task<bool> Init(SteamClient steamClient, string webAPIUserNonce, string parentalPin) {
if ((steamClient == null) || string.IsNullOrEmpty(webAPIUserNonce)) {
Logging.LogNullError(nameof(steamClient) + " || " + nameof(webAPIUserNonce), Bot.BotName);
return false;
@@ -179,12 +183,17 @@ namespace ArchiSteamFarm {
string steamLoginSecure = authResult["tokensecure"].Value;
WebBrowser.CookieContainer.Add(new Cookie("steamLoginSecure", steamLoginSecure, "/", "." + SteamCommunityHost));
WebBrowser.CookieContainer.Add(new Cookie("Steam_Language", "english", "/", "." + SteamCommunityHost));
if (!UnlockParentalAccount(parentalPin).Result) {
// Apparently Steam is too stupid to detect language from our headers, so we must ask for it explicitly
if (!await SetLanguage().ConfigureAwait(false)) {
return false;
}
// Unlock Steam Parental if needed
if (!await UnlockParentalAccount(parentalPin).ConfigureAwait(false)) {
return false;
}
Ready = true;
LastSessionRefreshCheck = DateTime.Now;
return true;
}
@@ -935,5 +944,14 @@ namespace ArchiSteamFarm {
Logging.LogGenericInfo("Success!", Bot.BotName);
return true;
}
private async Task<bool> SetLanguage() {
string request = SteamCommunityURL + "/actions/SetLanguage";
Dictionary<string, string> data = new Dictionary<string, string>(1) {
{ "language", "english" }
};
return await WebBrowser.UrlPostRetry(request, data).ConfigureAwait(false);
}
}
}

View File

@@ -306,7 +306,7 @@ namespace ArchiSteamFarm {
return false;
}
if (ArchiWebHandler.Init(SteamClient, callback.Nonce, BotConfig.SteamParentalPIN)) {
if (await ArchiWebHandler.Init(SteamClient, callback.Nonce, BotConfig.SteamParentalPIN).ConfigureAwait(false)) {
return true;
}
@@ -1452,6 +1452,7 @@ namespace ArchiSteamFarm {
return;
}
ArchiWebHandler.OnDisconnected();
Logging.LogGenericInfo("Disconnected from Steam!", BotName);
FirstTradeSent = false;
@@ -1503,6 +1504,14 @@ namespace ArchiSteamFarm {
return;
}
for (byte i = 0; (i < Program.GlobalConfig.HttpTimeout) && !ArchiWebHandler.Ready; i++) {
await Task.Delay(1000).ConfigureAwait(false);
}
if (!ArchiWebHandler.Ready) {
return;
}
bool acceptedSomething = false;
foreach (ulong gid in callback.GuestPasses.Select(guestPass => guestPass["gid"].AsUnsignedLong()).Where(gid => gid != 0)) {
Logging.LogGenericInfo("Accepting gift: " + gid + "...", BotName);
@@ -1698,7 +1707,7 @@ namespace ArchiSteamFarm {
}
}
if (!ArchiWebHandler.Init(SteamClient, callback.WebAPIUserNonce, BotConfig.SteamParentalPIN)) {
if (!await ArchiWebHandler.Init(SteamClient, callback.WebAPIUserNonce, BotConfig.SteamParentalPIN).ConfigureAwait(false)) {
if (!await RefreshSession().ConfigureAwait(false)) {
return;
}