def load_middlewares(self, names=[]): """Load new middlewares """ for m in (names or self.middlewares): if not callable(m) and isinstance(m, str): func = self.bot.load_thing(m) if (func and callable(func) and isinstance(func, types.FunctionType)): self._middlewares.append(func) continue elif func: middleware = func() for package in getattr(middleware, "requirements", []): install_package(package) self._middlewares.append(middleware) continue elif callable(m): self._middlewares.append(m) self._all_middlewares = deepcopy(self.middlewares)
def sc(self): """Returns slack client""" if not hasattr(self, "client"): try: from slackclient import SlackClient except ImportError: install_package("slackclient") from slackclient import SlackClient self.client = SlackClient(self.conf['token']) return self.client
def init_logging(self): """Init logging""" if not self.is_ready(): return if 'sentry_dsn' in self.logging: install_package("raven") from raven import Client self.sentry = Client(self.logging['sentry_dsn']) logging.basicConfig(level=self.get_log_level())
def get_fernet_token(self): """Return new token or initialized fernet token""" if self.encrypt: try: from cryptography.fernet import Fernet except ImportError: install_package("cryptography") from cryptography.fernet import Fernet _token = self.conf.get("storage", {}).get("fernet_token", None) if self.encrypt and not _token: return Fernet.generate_key().decode("utf-8") elif self.encrypt and _token: return Fernet(_token)
def mqtt(self): """Returns slack client""" if not hasattr(self, "client"): try: import paho.mqtt.client as mqtt except ImportError: install_package("paho-mqtt") import paho.mqtt.client as mqtt self.client = mqtt.Client() self.client.on_connect = on_connect self.client.on_message = on_message self.client.mbot = self.bot self.client.backend = self return self.client
def get_bucket(self, name): """Returns bucket by name """ try: import boto3 except ImportError: install_package("boto3") try: logging.getLogger('boto3').setLevel(logging.CRITICAL) logging.getLogger('botocore').setLevel(logging.CRITICAL) logging.getLogger('nose').setLevel(logging.CRITICAL) except: pass s3 = boto3.resource('s3') return s3.Bucket(name)