Source code for api_searcher.search_engines.censys_engine.censys_credentials

from django.conf import settings
USER_CREDENTIALS_DB = settings.USER_CREDENTIALS_DB_NAME

from api_searcher.models import CensysCredentialsModel

[docs]class CensysCredentialsError(Exception): """Zgłasza wyjątek gdy nie można utworzyć obiketu przechowujące dane użytkownika do seriwsu http://censys.io/"""
[docs] def __init__(self, message=None, errors=None): super().__init__(message) self.errors = errors
[docs]class CensysCredentials: """Sinleton - Klasa przechowująca wymagane dane dla seriwsu trzeciego http://censys.io/. Daje także możliwość aktualizacji danych uwierzytelniających użytkownika np. w przypadku przekroczenia ilości wyszukiwań na darmowym koncie w serwisie.""" __instance = None
[docs] def __init__(self): if not CensysCredentials.__instance: credentials_obj = CensysCredentialsModel.objects.using(self.db_name).all().first() if not credentials_obj: credentials_obj = CensysCredentialsModel.objects.using(self.db_name).create() self.__base_url = credentials_obj.base_url self.__api_id = credentials_obj.api_id self.__secret = credentials_obj.secret self.__api_url = credentials_obj.api_url else: self.getInstance()
[docs] @classmethod def getInstance(cls): """Metoda klasy wymaga dla klasy typu Singleton - zwraca instancję klasy, gwarantuje istnienie tylko jednego obiektu z danymi wuierzytleniajacmi użytkownika.""" if not cls.__instance: cls.__instance = CensysCredentials() return cls.__instance
@property def db_name(self): return USER_CREDENTIALS_DB @property def base_url(self): return self.__base_url @property def api_id(self): return self.__api_id
[docs] def update_api_id(self, new_api_id): """Metoda do aktualizacji danych "API_ID" dla konta użytkownika do serwisu http://censys.io/ """ if not new_api_id: raise CensysCredentialsError('Censys "API_ID" value is empty.') credentials_obj = CensysCredentialsModel.objects.using(self.db_name).all().first() credentials_obj.api_id = new_api_id credentials_obj.save() # aktualizacja danych obiektu self.__api_id = new_api_id
@property def secret(self): return self.__secret
[docs] def update_secret(self, new_secret): """Metoda niezbędne do aktualizacji danych "Secret" dla konta użytkownika do serwisu http://censys.io/ """ if not new_secret: raise CensysCredentialsError('Censys "Secret" value is empty.') credentials_obj = CensysCredentialsModel.objects.using(self.db_name).all().first() credentials_obj.secret = new_secret credentials_obj.save() # aktualizacja danych obiektu self.__secret = new_secret
@property def api_url(self): return self.__api_url