public EmulatorController(IEmulatorService emulatorService) { EmulatorService = emulatorService; }
public InController(IEmulatorService service) { _service = service; }
protected virtual bool TryDecryptBody(PokerKingPackage package, Process process, IEmulatorService emulatorService, bool withRepeat = true) { try { if (!userTokens.TryGetValue(package.UserId, out string token)) { withRepeat = false; LogProvider.Log.Info(Logger, $"Token for user #{package.UserId} not found"); // read token from emulator var loginResponses = emulatorService.ExecuteAdbCommand(process, Encoding.ASCII.GetString(arg1), Encoding.ASCII.GetString(arg2)); foreach (var loginResponseXml in loginResponses) { if (!PKLoginResponse.TryParse(loginResponseXml, out PKLoginResponse loginResponse)) { LogProvider.Log.Warn(Logger, $"Failed to parse token for user #{package.UserId} from response."); continue; } userTokens.AddOrUpdate(loginResponse.UserId, loginResponse.UserToken, (dictKey, oldValue) => loginResponse.UserToken); LogProvider.Log.Info(Logger, $"Token for user #{loginResponse.UserId} has been updated."); if (loginResponse.UserId == package.UserId) { token = loginResponse.UserToken; } } if (string.IsNullOrEmpty(token)) { LogProvider.Log.Warn(Logger, $"Failed to find token for user #{package.UserId}."); return(false); } } var key = Encoding.ASCII.GetBytes(token); package.Body = PKCipherHelper.Decode(key, package.Body); return(true); } catch (Exception e) { if (withRepeat) { LogProvider.Log.Warn(Logger, $"Failed to read the body of user #{package.UserId} room #{package.RoomId}. Removing invalid token."); userTokens.TryRemove(package.UserId, out string removeToken); return(TryDecryptBody(package, process, emulatorService, false)); } LogProvider.Log.Error(Logger, $"Couldn't read the body of {package.PackageType} user #{package.UserId} room #{package.RoomId}", e); } return(false); }