58 lines
1.3 KiB
Python
58 lines
1.3 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
import os
|
||
|
|
||
|
from . import User, App
|
||
|
|
||
|
# The dir where all toot configuration is stored
|
||
|
CONFIG_DIR = os.environ['HOME'] + '/.config/toot/'
|
||
|
|
||
|
# Subfolder where application access keys for various instances are stored
|
||
|
INSTANCES_DIR = CONFIG_DIR + 'instances/'
|
||
|
|
||
|
# File in which user access token is stored
|
||
|
CONFIG_USER_FILE = CONFIG_DIR + 'user.cfg'
|
||
|
|
||
|
|
||
|
def load_user(path):
|
||
|
if not os.path.exists(path):
|
||
|
return None
|
||
|
|
||
|
with open(path, 'r') as f:
|
||
|
lines = f.read().split()
|
||
|
return User(*lines)
|
||
|
|
||
|
|
||
|
def load_apps(path):
|
||
|
if not os.path.exists(path):
|
||
|
return []
|
||
|
|
||
|
for name in os.listdir(path):
|
||
|
with open(path + name) as f:
|
||
|
values = f.read().split()
|
||
|
yield App(*values)
|
||
|
|
||
|
|
||
|
def add_username(user, apps):
|
||
|
"""When using broser login, username was not stored so look it up"""
|
||
|
if not user:
|
||
|
return None
|
||
|
|
||
|
apps = [a for a in apps if a.instance == user.instance]
|
||
|
|
||
|
if not apps:
|
||
|
return None
|
||
|
|
||
|
from toot.api import verify_credentials
|
||
|
creds = verify_credentials(apps.pop(), user)
|
||
|
|
||
|
return User(user.instance, creds['username'], user.access_token)
|
||
|
|
||
|
|
||
|
def load_legacy_config():
|
||
|
apps = list(load_apps(INSTANCES_DIR))
|
||
|
user = load_user(CONFIG_USER_FILE)
|
||
|
user = add_username(user, apps)
|
||
|
|
||
|
return apps, user
|