mirror of
https://github.com/robweber/xbmcbackup.git
synced 2024-11-15 04:45:49 +01:00
52 lines
1.7 KiB
Python
52 lines
1.7 KiB
Python
|
import pkg_resources
|
||
|
import os
|
||
|
import ssl
|
||
|
|
||
|
import requests
|
||
|
from requests.adapters import HTTPAdapter
|
||
|
from urllib3.poolmanager import PoolManager
|
||
|
|
||
|
API_DOMAIN = os.environ.get('DROPBOX_API_DOMAIN',
|
||
|
os.environ.get('DROPBOX_DOMAIN', '.dropboxapi.com'))
|
||
|
|
||
|
WEB_DOMAIN = os.environ.get('DROPBOX_WEB_DOMAIN',
|
||
|
os.environ.get('DROPBOX_DOMAIN', '.dropbox.com'))
|
||
|
|
||
|
# Default short hostname for RPC-style routes.
|
||
|
HOST_API = 'api'
|
||
|
|
||
|
# Default short hostname for upload and download-style routes.
|
||
|
HOST_CONTENT = 'content'
|
||
|
|
||
|
# Default short hostname for longpoll routes.
|
||
|
HOST_NOTIFY = 'notify'
|
||
|
|
||
|
# Default short hostname for the Drobox website.
|
||
|
HOST_WWW = 'www'
|
||
|
|
||
|
API_HOST = os.environ.get('DROPBOX_API_HOST', HOST_API + API_DOMAIN)
|
||
|
API_CONTENT_HOST = os.environ.get('DROPBOX_API_CONTENT_HOST', HOST_CONTENT + API_DOMAIN)
|
||
|
API_NOTIFICATION_HOST = os.environ.get('DROPBOX_API_NOTIFY_HOST', HOST_NOTIFY + API_DOMAIN)
|
||
|
WEB_HOST = os.environ.get('DROPBOX_WEB_HOST', HOST_WWW + WEB_DOMAIN)
|
||
|
|
||
|
_TRUSTED_CERT_FILE = pkg_resources.resource_filename(__name__, 'trusted-certs.crt')
|
||
|
|
||
|
# TODO(kelkabany): We probably only want to instantiate this once so that even
|
||
|
# if multiple Dropbox objects are instantiated, they all share the same pool.
|
||
|
class _SSLAdapter(HTTPAdapter):
|
||
|
def init_poolmanager(self, connections, maxsize, block=False, **_):
|
||
|
self.poolmanager = PoolManager(
|
||
|
num_pools=connections,
|
||
|
maxsize=maxsize,
|
||
|
block=block,
|
||
|
cert_reqs=ssl.CERT_REQUIRED,
|
||
|
ca_certs=_TRUSTED_CERT_FILE,
|
||
|
)
|
||
|
|
||
|
def pinned_session(pool_maxsize=8):
|
||
|
http_adapter = _SSLAdapter(pool_connections=4, pool_maxsize=pool_maxsize)
|
||
|
_session = requests.session()
|
||
|
_session.mount('https://', http_adapter)
|
||
|
|
||
|
return _session
|