You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
970 B
Python
37 lines
970 B
Python
4 years ago
|
import os
|
||
|
from urllib.parse import urlparse
|
||
|
|
||
|
from matrix_client.client import MatrixClient
|
||
|
|
||
|
MATRIX_USER = os.environ['MATRIX_USER']
|
||
|
MATRIX_PASSWORD = os.environ['MATRIX_PASSWORD']
|
||
|
MATRIX_HOST = os.environ.get('MATRIX_HOST', "https://matrix.org")
|
||
|
|
||
|
_client = None
|
||
|
_download_url_resolvers = dict()
|
||
|
|
||
|
|
||
|
def matrix_client():
|
||
|
global _client
|
||
|
if _client:
|
||
|
return _client
|
||
|
print(f"Signing into {MATRIX_HOST}...")
|
||
|
client = MatrixClient(MATRIX_HOST)
|
||
|
client.login_with_password(username=MATRIX_USER,
|
||
|
password=MATRIX_PASSWORD)
|
||
|
_client = client
|
||
|
return client
|
||
|
|
||
|
|
||
|
def get_download_url(url):
|
||
|
u = urlparse(url)
|
||
|
assert u.scheme == 'mxc'
|
||
|
host = u.netloc
|
||
|
resolvers = _download_url_resolvers
|
||
|
resolver = resolvers.get(host) or MatrixClient(host).api.get_download_url
|
||
|
resolvers[host] = resolver
|
||
|
return 'https://' + resolver(url)
|
||
|
|
||
|
|
||
|
get_matrix_download_url = MatrixClient(MATRIX_HOST).api.get_download_url
|