/// <summary> /// Login with a stored <see cref="AccessToken" />. /// </summary> /// <param name="loginProvider">The OAuth provider you use to authenticate.</param> /// <param name="accessToken">The <see cref="AccessToken"/> you want to re-use.</param> /// <param name="coordinate">The initial coordinate you will spawn at after logging into PokémonGo.</param> /// <param name="deviceWrapper">The <see cref="DeviceWrapper"/> used by the <see cref="Session"/>, keep null if you want a randomly generated <see cref="DeviceWrapper"/>.</param> /// <param name = "playerLocale"></param> /// <returns></returns> public static Session GetSession(ILoginProvider loginProvider, AccessToken accessToken, GeoCoordinate coordinate, DeviceWrapper deviceWrapper = null, GetPlayerMessage.Types.PlayerLocale playerLocale = null) { DeviceWrapper device = deviceWrapper ?? DeviceInfoUtil.GetRandomDevice(); GetPlayerMessage.Types.PlayerLocale locale = playerLocale ?? new GetPlayerMessage.Types.PlayerLocale { Country = "US", Language = "en", Timezone = "America/New_York" }; string language = locale.Language + "-" + locale.Country; if (accessToken.IsExpired) { accessToken = loginProvider.GetAccessToken(device.UserAgent, language).Result; //throw new ArgumentException($"{nameof(accessToken)} is expired."); } var session = new Session(loginProvider, accessToken, coordinate, device, locale); session.Logger.Debug("Authenticated from cache."); if (loginProvider is PtcLoginProvider) { session.Logger.Debug("Authenticated through PTC."); } else { session.Logger.Debug("Authenticated through Google."); } return(session); }
/// <summary> /// Login with a stored <see cref="AccessToken" />. /// </summary> /// <param name="loginProvider">The OAuth provider you use to authenticate.</param> /// <param name="accessToken">The <see cref="AccessToken"/> you want to re-use.</param> /// <param name="coordinate">The initial coordinate you will spawn at after logging into UniteGo.</param> /// <param name="deviceWrapper">The <see cref="DeviceWrapper"/> used by the <see cref="Session"/>, keep null if you want a randomly generated <see cref="DeviceWrapper"/>.</param> /// <param name = "playerLocale"></param> /// <returns></returns> public static async Task <Session> GetSession(ILoginProvider loginProvider, AccessToken accessToken, GeoCoordinate coordinate, DeviceWrapper deviceWrapper = null, CreateOrUpdatePlayerMessage.Types.ClientPlayerLocale playerLocale = null) { DeviceWrapper device = deviceWrapper ?? DeviceInfoUtil.GetRandomDevice(); CreateOrUpdatePlayerMessage.Types.ClientPlayerLocale locale = playerLocale ?? new CreateOrUpdatePlayerMessage.Types.ClientPlayerLocale { Country = "US", Language = "en", Timezone = "America/New_York" }; string language = locale.Language + "-" + locale.Country; if (accessToken == null || string.IsNullOrEmpty(accessToken.Token) || accessToken.IsExpired) { accessToken = await loginProvider.GetAccessToken(device.UserAgent, language); if (accessToken == null || string.IsNullOrEmpty(accessToken.Token) || accessToken.IsExpired) { throw new SessionStateException($"{nameof(accessToken)} is expired."); } } var session = new Session(loginProvider, accessToken, coordinate, device, locale); session.Logger.Debug("Authenticated from cache."); session.Logger.Debug("Authenticated through Google."); return(session); }
public void RandomizeDevice() { var device = DeviceInfoUtil.GetRandomDevice(); DeviceInfo.DeviceId = device.DeviceInfo.DeviceId; DeviceInfo.DeviceBrand = device.DeviceInfo.DeviceBrand; DeviceInfo.DeviceModel = device.DeviceInfo.DeviceModel; DeviceInfo.DeviceModelBoot = device.DeviceInfo.DeviceModelBoot; DeviceInfo.HardwareManufacturer = device.DeviceInfo.HardwareManufacturer; DeviceInfo.HardwareModel = device.DeviceInfo.HardwareModel; DeviceInfo.FirmwareBrand = device.DeviceInfo.FirmwareBrand; DeviceInfo.FirmwareType = device.DeviceInfo.FirmwareType; }
/// <summary> /// Login through OAuth with Google. /// </summary> /// <param name="loginProvider">The OAuth provider you use to authenticate.</param> /// <param name="initialLatitude">The initial latitude you will spawn at after logging into UniteGo.</param> /// <param name="initialLongitude">The initial longitude you will spawn at after logging into UniteGo.</param> /// <param name="deviceWrapper">The <see cref="DeviceWrapper"/> used by the <see cref="Session"/>, keep null if you want a randomly generated <see cref="DeviceWrapper"/>.</param> /// <param name = "playerLocale"></param> /// <returns></returns> public static async Task <Session> GetSession(ILoginProvider loginProvider, double initialLatitude, double initialLongitude, DeviceWrapper deviceWrapper = null, CreateOrUpdatePlayerMessage.Types.ClientPlayerLocale playerLocale = null) { DeviceWrapper device = deviceWrapper ?? DeviceInfoUtil.GetRandomDevice(); CreateOrUpdatePlayerMessage.Types.ClientPlayerLocale locale = playerLocale ?? new CreateOrUpdatePlayerMessage.Types.ClientPlayerLocale { Country = "US", Language = "en", Timezone = "America/New_York" }; string language = locale.Language + "-" + locale.Country; var session = new Session(loginProvider, await loginProvider.GetAccessToken(device.UserAgent, language), new GeoCoordinate(initialLatitude, initialLongitude), device, locale); session.Logger.Debug("Authenticated through Google."); return(session); }
public void LoadDeviceSettings() { var device = DeviceInfoUtil.GetRandomDevice(); DeviceId = device.DeviceInfo.DeviceId; AndroidBoardName = device.DeviceInfo.AndroidBoardName; AndroidBootloader = device.DeviceInfo.AndroidBootloader; DeviceBrand = device.DeviceInfo.DeviceBrand; DeviceModel = device.DeviceInfo.DeviceModel; DeviceModelIdentifier = device.DeviceInfo.DeviceModelIdentifier; DeviceModelBoot = device.DeviceInfo.DeviceModelBoot; HardwareManufacturer = device.DeviceInfo.HardwareManufacturer; HardwareModel = device.DeviceInfo.HardwareModel; FirmwareBrand = device.DeviceInfo.FirmwareBrand; FirmwareTags = device.DeviceInfo.FirmwareTags; FirmwareType = device.DeviceInfo.FirmwareType; FirmwareFingerprint = device.DeviceInfo.FirmwareFingerprint; }
/// <summary> /// Login through OAuth with PTC / Google. /// </summary> /// <param name="loginProvider">The OAuth provider you use to authenticate.</param> /// <param name="coordinate">The initial coordinate you will spawn at after logging into PokémonGo.</param> /// <param name="deviceWrapper">The <see cref="DeviceWrapper"/> used by the <see cref="Session"/>, keep null if you want a randomly generated <see cref="DeviceWrapper"/>.</param> /// <param name = "playerLocale"></param> /// <returns></returns> public static async Task <Session> GetSession(ILoginProvider loginProvider, GeoCoordinate coordinate, DeviceWrapper deviceWrapper = null, GetPlayerMessage.Types.PlayerLocale playerLocale = null) { DeviceWrapper device = deviceWrapper ?? DeviceInfoUtil.GetRandomDevice(); GetPlayerMessage.Types.PlayerLocale locale = playerLocale ?? new GetPlayerMessage.Types.PlayerLocale { Country = "US", Language = "en", Timezone = "America/New_York" }; string language = locale.Language + "-" + locale.Country; var session = new Session(loginProvider, await loginProvider.GetAccessToken(device.UserAgent, language), coordinate, device, locale); if (loginProvider is PtcLoginProvider) { session.Logger.Debug("Authenticated through PTC."); } else { session.Logger.Debug("Authenticated through Google."); } return(session); }
/// <summary> /// Stores data like assets and item templates. Defaults to an in-memory cache, but can be implemented as writing to disk by the platform /// </summary> // public IDataCache DataCache { get; set; } = new MemoryDataCache(); // public Templates Templates { get; private set; } internal Session(ILoginProvider loginProvider, AccessToken accessToken, GeoCoordinate geoCoordinate, DeviceInfo deviceInfo = null) { if (!ValidLoginProviders.Contains(loginProvider.ProviderId)) { throw new ArgumentException($"LoginProvider ID must be one of the following: {string.Join(", ", ValidLoginProviders)}"); } HttpClient = new HttpClient(new HttpClientHandler { AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate }); HttpClient.DefaultRequestHeaders.UserAgent.TryParseAdd("Niantic App"); HttpClient.DefaultRequestHeaders.ExpectContinue = false; DeviceInfo = deviceInfo ?? DeviceInfoUtil.GetRandomDevice(this); AccessToken = accessToken; LoginProvider = loginProvider; Player = new Player(geoCoordinate); Map = new Map(this); RpcClient = new RpcClient(this); _heartbeat = new HeartbeatDispatcher(this); }
public void RandomizeDeviceId() { var device = DeviceInfoUtil.GetRandomDevice(); DeviceInfo.DeviceId = device.DeviceInfo.DeviceId; }
public MethodResult ImportConfig(string data) { try { List <Manager> managers = Serializer.FromJson <List <Manager> >(data) ?? new List <Manager> { new Manager { UserSettings = Serializer.FromJson <Settings>(data) } }; foreach (Manager manager in managers) { Settings settings = manager.UserSettings; settings.AccountName = UserSettings.AccountName; settings.Password = UserSettings.Password; settings.Username = UserSettings.Username; settings.AuthType = UserSettings.AuthType; settings.ProxyIP = UserSettings.ProxyIP; settings.ProxyPassword = UserSettings.ProxyPassword; settings.ProxyPort = UserSettings.ProxyPort; settings.ProxyUsername = UserSettings.ProxyUsername; settings.GroupName = UserSettings.GroupName; //Randomize device id var device = DeviceInfoUtil.GetRandomDevice(); settings.DeviceId = device.DeviceInfo.DeviceId; settings.DeviceBrand = device.DeviceInfo.DeviceBrand; settings.DeviceModel = device.DeviceInfo.DeviceModel; settings.DeviceModelBoot = device.DeviceInfo.DeviceModelBoot; settings.HardwareManufacturer = device.DeviceInfo.HardwareManufacturer; settings.HardwareModel = device.DeviceInfo.HardwareModel; settings.FirmwareBrand = device.DeviceInfo.FirmwareBrand; settings.FirmwareType = device.DeviceInfo.FirmwareType; UserSettings = settings; if (String.IsNullOrEmpty(UserSettings.DeviceBrand)) { UserSettings.RandomizeDevice(); } } /* * Settings settings = Serializer.FromJson<Settings>(data); * settings.AccountName = UserSettings.AccountName; * settings.Password = UserSettings.Password; * settings.Username = UserSettings.Username; * settings.AuthType = UserSettings.AuthType; * settings.ProxyIP = UserSettings.ProxyIP; * settings.ProxyPassword = UserSettings.ProxyPassword; * settings.ProxyPort = UserSettings.ProxyPort; * settings.ProxyUsername = UserSettings.ProxyUsername; * settings.GroupName = UserSettings.GroupName; * * //Randomize device id * var device = DeviceInfoUtil.GetRandomDevice(); * settings.DeviceId = device.DeviceInfo.DeviceId; * settings.DeviceBrand = device.DeviceInfo.DeviceBrand; * settings.DeviceModel = device.DeviceInfo.DeviceModel; * settings.DeviceModelBoot = device.DeviceInfo.DeviceModelBoot; * settings.HardwareManufacturer = device.DeviceInfo.HardwareManufacturer; * settings.HardwareModel = device.DeviceInfo.HardwareModel; * settings.FirmwareBrand = device.DeviceInfo.FirmwareBrand; * settings.FirmwareType = device.DeviceInfo.FirmwareType; */ LogCaller(new LoggerEventArgs("Successfully imported config file", LoggerTypes.Info)); return(new MethodResult { Message = "Success", Success = true }); } catch (Exception ex) { string message = String.Format("Failed to import config. Ex: {0}", ex.Message); LogCaller(new LoggerEventArgs(message, LoggerTypes.Exception, ex)); return(new MethodResult { Message = message }); } }
public MethodResult ImportConfig(string data) { try { Settings settings = Serializer.FromJson <Settings>(data); settings.AccountName = UserSettings.AccountName; settings.Password = UserSettings.Password; settings.Username = UserSettings.Username; settings.AuthType = UserSettings.AuthType; settings.ProxyIP = UserSettings.ProxyIP; settings.ProxyPassword = UserSettings.ProxyPassword; settings.ProxyPort = UserSettings.ProxyPort; settings.ProxyUsername = UserSettings.ProxyUsername; settings.GroupName = UserSettings.GroupName; //new values added settings.Latitude = settings.Latitude; settings.Longitude = settings.Longitude; settings.Altitude = settings.Altitude; settings.Country = settings.Country; settings.Language = settings.Language; settings.TimeZone = settings.TimeZone; settings.POSIX = settings.POSIX; //Randomize device id var device = DeviceInfoUtil.GetRandomDevice(); settings.DeviceId = device.DeviceInfo.DeviceId; settings.DeviceBrand = settings.DeviceBrand; settings.DeviceModel = settings.DeviceModel; settings.DeviceModelBoot = settings.DeviceModelBoot; settings.HardwareManufacturer = settings.HardwareManufacturer; settings.HardwareModel = settings.HardwareModel; settings.FirmwareBrand = settings.FirmwareBrand; settings.FirmwareType = settings.FirmwareType; foreach (var element in settings.EvolveSettings) { var pokemonSetting = settings.EvolveSettings.FirstOrDefault(x => x.Id == element.Id); if (pokemonSetting != null) { pokemonSetting.Evolve = element.Evolve; pokemonSetting.MinCP = element.MinCP; } } foreach (var element in settings.TransferSettings) { var pokemonSetting = settings.TransferSettings.FirstOrDefault(x => x.Id == element.Id); if (pokemonSetting != null) { pokemonSetting.Transfer = element.Transfer; pokemonSetting.MinCP = element.MinCP; pokemonSetting.IVPercent = element.IVPercent; pokemonSetting.KeepMax = element.KeepMax; pokemonSetting.Type = element.Type; } } UserSettings = settings; if (String.IsNullOrEmpty(UserSettings.DeviceBrand)) { UserSettings.RandomizeDevice(); } LogCaller(new LoggerEventArgs("Successfully imported config file", LoggerTypes.Info)); return(new MethodResult { Message = "Success", Success = true }); } catch (Exception ex) { string message = String.Format("Failed to import config. Ex: {0}", ex.Message); LogCaller(new LoggerEventArgs(message, LoggerTypes.Exception, ex)); return(new MethodResult { Message = message }); } }