def setup_gcs(application):
    if application.config['EQ_STORAGE_BACKEND'] == 'gcs':
        gcs_session = AuthorizedSession(google.auth.default()[0])
        gcs_session.mount('https://', requests.adapters.HTTPAdapter(pool_maxsize=application.config['EQ_GCS_MAX_POOL_CONNECTIONS']))
        client = storage.Client(_http=gcs_session)
        bucket = client.get_bucket(application.config['EQ_GCS_BUCKET_ID'])

        application.eq['gcsbucket'] = bucket
Exemplo n.º 2
0
class Firebase:
    """ Firebase Interface """
    def __init__(self, config):
        self.api_key = config["apiKey"]
        self.auth_domain = config["authDomain"]
        self.database_url = config["databaseURL"]
        self.storage_bucket = config["storageBucket"]
        self.credentials = None

        if config.get("serviceAccount"):
            scopes = [
                'https://www.googleapis.com/auth/firebase.database',
                'https://www.googleapis.com/auth/userinfo.email',
                "https://www.googleapis.com/auth/cloud-platform"
            ]
            service_account_type = type(config["serviceAccount"])
            if service_account_type is str:
                self.credentials = service_account.Credentials.from_service_account_file(
                    config["serviceAccount"],
                    scopes=scopes
                )
            if service_account_type is dict:
                self.credentials = service_account.Credentials.from_service_account_info(
                    config["serviceAccount"],
                    scopes=scopes
                )
            self.requests = AuthorizedSession(self.credentials)
        else:
            self.requests = requests.Session()

        if is_appengine_sandbox():
            # Fix error in standard GAE environment
            # is releated to https://github.com/kennethreitz/requests/issues/3187
            # ProtocolError('Connection aborted.', error(13, 'Permission denied'))
            adapter = appengine.AppEngineAdapter(max_retries=3)
        else:
            adapter = requests.adapters.HTTPAdapter(max_retries=3)

        for scheme in ('http://', 'https://'):
            self.requests.mount(scheme, adapter)

    def auth(self):
        return Auth(self.api_key, self.requests, self.credentials)

    def database(self):
        return Database(self.credentials, self.api_key, self.database_url, self.requests)

    def storage(self):
        return Storage(self.credentials, self.storage_bucket, self.requests)