diff --git a/.gitmodules b/.gitmodules index ab5342617..4fbbe21b3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "FeroxRev"] path = FeroxRev - url = https://github.com/NecronomiconCoding/NecroBot-Rocket-API + url = https://github.com/NECROBOTIO/NecroBot-Rocket-API branch = master diff --git a/FeroxRev b/FeroxRev index 3ff1579e7..8b72929ff 160000 --- a/FeroxRev +++ b/FeroxRev @@ -1 +1 @@ -Subproject commit 3ff1579e7bdc05b1abea112112495d015a65c586 +Subproject commit 8b72929fff816e2a8b9ac198f1c7fa5df506e6b8 diff --git a/PoGo.NecroBot.Logic/Common/ApiFailureStrategy.cs b/PoGo.NecroBot.Logic/Common/ApiFailureStrategy.cs index ca79cf044..d8781a825 100644 --- a/PoGo.NecroBot.Logic/Common/ApiFailureStrategy.cs +++ b/PoGo.NecroBot.Logic/Common/ApiFailureStrategy.cs @@ -47,24 +47,16 @@ private async void DoLogin() { try { - switch (_session.Settings.AuthType) + if (_session.Settings.AuthType != AuthType.Google || _session.Settings.AuthType != AuthType.Ptc) { - case AuthType.Ptc: - await - _session.Client.Login.DoPtcLogin(_session.Settings.PtcUsername, - _session.Settings.PtcPassword); - break; - case AuthType.Google: - await - _session.Client.Login.DoGoogleLogin(_session.Settings.GoogleUsername, - _session.Settings.GooglePassword); - break; - default: - _session.EventDispatcher.Send(new ErrorEvent - { - Message = _session.Translation.GetTranslation(TranslationString.WrongAuthType) - }); - break; + await _session.Client.Login.DoLogin(); + } + else + { + _session.EventDispatcher.Send(new ErrorEvent + { + Message = _session.Translation.GetTranslation(TranslationString.WrongAuthType) + }); } } catch (AggregateException ae) diff --git a/PoGo.NecroBot.Logic/State/LoginState.cs b/PoGo.NecroBot.Logic/State/LoginState.cs index c3af3f53b..605e245c2 100644 --- a/PoGo.NecroBot.Logic/State/LoginState.cs +++ b/PoGo.NecroBot.Logic/State/LoginState.cs @@ -30,24 +30,16 @@ public async Task Execute(ISession session, CancellationToken cancellati try { - switch (session.Settings.AuthType) + if (session.Settings.AuthType != AuthType.Google || session.Settings.AuthType != AuthType.Ptc) { - case AuthType.Ptc: - await - session.Client.Login.DoPtcLogin(session.Settings.PtcUsername, - session.Settings.PtcPassword); - break; - case AuthType.Google: - await - session.Client.Login.DoGoogleLogin(session.Settings.GoogleUsername, - session.Settings.GooglePassword); - break; - default: - session.EventDispatcher.Send(new ErrorEvent - { - Message = session.Translation.GetTranslation(TranslationString.WrongAuthType) - }); - return null; + await session.Client.Login.DoLogin(); + } + else + { + session.EventDispatcher.Send(new ErrorEvent + { + Message = session.Translation.GetTranslation(TranslationString.WrongAuthType) + }); } } catch (AggregateException ae) @@ -64,8 +56,6 @@ public async Task Execute(ISession session, CancellationToken cancellati { Message = session.Translation.GetTranslation(TranslationString.TryingAgainIn, 20) }); - await Task.Delay(20000, cancellationToken); - return this; } catch (AccountNotVerifiedException) { diff --git a/PoGo.NecroBot.Logic/State/Session.cs b/PoGo.NecroBot.Logic/State/Session.cs index 3f23b0272..914530d4c 100644 --- a/PoGo.NecroBot.Logic/State/Session.cs +++ b/PoGo.NecroBot.Logic/State/Session.cs @@ -50,7 +50,8 @@ public Session(ISettings settings, ILogicSettings logicSettings) public void Reset(ISettings settings, ILogicSettings logicSettings) { - Client = new Client(Settings) {AuthType = settings.AuthType}; + ApiFailureStrategy _apiStrategy = new ApiFailureStrategy(this); + Client = new Client(Settings, _apiStrategy); // ferox wants us to set this manually Inventory = new Inventory(Client, logicSettings); Navigation = new Navigation(Client); diff --git a/PoGo.NecroBot.Logic/Tasks/Login.cs b/PoGo.NecroBot.Logic/Tasks/Login.cs index e6ebf3d61..63bafb844 100644 --- a/PoGo.NecroBot.Logic/Tasks/Login.cs +++ b/PoGo.NecroBot.Logic/Tasks/Login.cs @@ -25,28 +25,37 @@ public Login(ISession session) _session = session; } - public void DoLogin() + public async void DoLogin() { try { - if (_session.Client.AuthType == AuthType.Ptc) + if (_session.Settings.AuthType != AuthType.Google || _session.Settings.AuthType != AuthType.Ptc) { - try - { - _session.Client.Login.DoPtcLogin(_session.Settings.PtcUsername, _session.Settings.PtcPassword) - .Wait(); - } - catch (AggregateException ae) - { - throw ae.Flatten().InnerException; - } + await _session.Client.Login.DoLogin(); } else { - _session.Client.Login.DoGoogleLogin(_session.Settings.GoogleUsername, - _session.Settings.GooglePassword).Wait(); + _session.EventDispatcher.Send(new ErrorEvent + { + Message = _session.Translation.GetTranslation(TranslationString.WrongAuthType) + }); } } + catch (AggregateException ae) + { + throw ae.Flatten().InnerException; + } + catch (Exception ex) when (ex is PtcOfflineException || ex is AccessTokenExpiredException) + { + _session.EventDispatcher.Send(new ErrorEvent + { + Message = _session.Translation.GetTranslation(TranslationString.PtcOffline) + }); + _session.EventDispatcher.Send(new NoticeEvent + { + Message = _session.Translation.GetTranslation(TranslationString.TryingAgainIn, 20) + }); + } catch (PtcOfflineException) { _session.EventDispatcher.Send(new ErrorEvent