def set_authentication(self, provider=None, oauth2_refresh_token=None, username=None, password=None): if provider == 'ptc': self._auth_provider = AuthPtc() elif provider == 'google': self._auth_provider = AuthGoogle() elif provider is None: self._auth_provider = None else: raise AuthException( "Invalid authentication provider - only ptc/google available.") self.log.debug('Auth provider: %s', provider) if oauth2_refresh_token is not None: self._auth_provider.set_refresh_token(oauth2_refresh_token) elif username is not None and password is not None: self._auth_provider.user_login(username, password) else: raise AuthException( "Invalid Credential Input - Please provide username/password or an oauth2 refresh token" )
def set_authentication(self, provider=None, oauth2_refresh_token=None, username=None, password=None, proxy_config=None, user_agent=None, timeout=None): if provider == 'ptc': self._auth_provider = AuthPtc(user_agent=user_agent, timeout=timeout) elif provider == 'google': self._auth_provider = AuthGoogle() elif provider is None: self._auth_provider = None else: raise InvalidCredentialsException( "Invalid authentication provider - only ptc/google available.") self.log.debug('Auth provider: {}'.format(provider)) if proxy_config: self._auth_provider.set_proxy(proxy_config) if oauth2_refresh_token is not None: self._auth_provider.set_refresh_token(oauth2_refresh_token) elif username and password: if not self._auth_provider.user_login(username, password): raise AuthException("User login failed!") else: raise InvalidCredentialsException( "Invalid Credential Input - Please provide username/password or an oauth2 refresh token" )
def login(self, provider, username, password, lat = None, lng = None, alt = None, app_simulation = True): if (lat is not None) and (lng is not None) and (alt is not None): self._position_lat = lat self._position_lng = lng self._position_alt = alt if not isinstance(username, six.string_types) or not isinstance(password, six.string_types): raise AuthException("Username/password not correctly specified") if provider == 'ptc': self._auth_provider = AuthPtc() elif provider == 'google': self._auth_provider = AuthGoogle() else: raise AuthException("Invalid authentication provider - only ptc/google available.") self.log.debug('Auth provider: %s', provider) if not self._auth_provider.login(username, password): self.log.info('Login process failed') return False if app_simulation: self.log.info('Starting RPC login sequence (app simulation)') # making a standard call, like it is also done by the client request = self.create_request() request.get_player() request.get_hatched_eggs() request.get_inventory() request.check_awarded_badges() request.download_settings(hash="05daf51635c82611d1aac95c0b051d3ec088a930") response = request.call() else: self.log.info('Starting minimal RPC login sequence') response = self.get_player() if not response: self.log.info('Login failed!') return False if 'api_url' in response: self._api_endpoint = ('https://{}/rpc'.format(response['api_url'])) self.log.debug('Setting API endpoint to: %s', self._api_endpoint) else: self.log.error('Login failed - unexpected server response!') return False if app_simulation: self.log.info('Finished RPC login sequence (app simulation)') else: self.log.info('Finished minimal RPC login sequence') self.log.info('Login process completed') return True
def login(self, provider, username, password, cached=False): if not isinstance(username, basestring) or not isinstance( password, basestring): raise AuthException("Username/password not correctly specified") if provider == 'ptc': self._auth_provider = AuthPtc() elif provider == 'google': self._auth_provider = AuthGoogle() else: raise AuthException( "Invalid authentication provider - only ptc/google available.") self.log.debug('Auth provider: %s', provider) if not self._auth_provider.login(username, password): self.log.info('Login process failed') return False self.log.info('Starting RPC login sequence (app simulation)') self.get_player() self.get_hatched_eggs() self.get_inventory() self.check_awarded_badges() self.download_settings(hash="05daf51635c82611d1aac95c0b051d3ec088a930" ) # not sure what this is but dont change it response = self.call() if not response: self.log.info('Login failed!') if os.path.isfile("auth_cache") and cached: response = pickle.load(open("auth_cache")) fname = "auth_cache_%s" % username if os.path.isfile(fname) and cached: response = pickle.load(open(fname)) else: response = self.heartbeat() f = open(fname, "w") pickle.dump(response, f) if not response: self.log.info('Login failed!') return False if 'api_url' in response: self._api_endpoint = ('https://{}/rpc'.format(response['api_url'])) self.log.debug('Setting API endpoint to: %s', self._api_endpoint) else: self.log.error('Login failed - unexpected server response!') return False if 'auth_ticket' in response: self._auth_provider.set_ticket(response['auth_ticket'].values()) self.log.info('Finished RPC login sequence (app simulation)') self.log.info('Login process completed') return True