85 lines
3.9 KiB
Python
85 lines
3.9 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
"""
|
||
|
|
||
|
Copyright (C) 2018-2018 plugin.video.youtube
|
||
|
|
||
|
SPDX-License-Identifier: GPL-2.0-only
|
||
|
See LICENSES/GPL-2.0-only for more information.
|
||
|
"""
|
||
|
|
||
|
import uuid
|
||
|
from . import JSONStore
|
||
|
|
||
|
|
||
|
# noinspection PyTypeChecker
|
||
|
class LoginTokenStore(JSONStore):
|
||
|
def __init__(self):
|
||
|
JSONStore.__init__(self, 'access_manager.json')
|
||
|
|
||
|
def set_defaults(self):
|
||
|
data = self.get_data()
|
||
|
if 'access_manager' not in data:
|
||
|
data = {'access_manager': {'users': {'0': {'access_token': '', 'refresh_token': '', 'token_expires': -1,
|
||
|
'last_key_hash': '', 'name': 'Default', 'watch_later': ' WL', 'watch_history': 'HL'}}}}
|
||
|
if 'users' not in data['access_manager']:
|
||
|
data['access_manager']['users'] = {'0': {'access_token': '', 'refresh_token': '', 'token_expires': -1,
|
||
|
'last_key_hash': '', 'name': 'Default', 'watch_later': ' WL', 'watch_history': 'HL'}}
|
||
|
if '0' not in data['access_manager']['users']:
|
||
|
data['access_manager']['users']['0'] = {'access_token': '', 'refresh_token': '', 'token_expires': -1,
|
||
|
'last_key_hash': '', 'name': 'Default', 'watch_later': ' WL', 'watch_history': 'HL'}
|
||
|
if 'current_user' not in data['access_manager']:
|
||
|
data['access_manager']['current_user'] = '0'
|
||
|
if 'last_origin' not in data['access_manager']:
|
||
|
data['access_manager']['last_origin'] = 'plugin.video.youtube'
|
||
|
if 'developers' not in data['access_manager']:
|
||
|
data['access_manager']['developers'] = dict()
|
||
|
|
||
|
# clean up
|
||
|
if data['access_manager']['current_user'] == 'default':
|
||
|
data['access_manager']['current_user'] = '0'
|
||
|
if 'access_token' in data['access_manager']:
|
||
|
del data['access_manager']['access_token']
|
||
|
if 'refresh_token' in data['access_manager']:
|
||
|
del data['access_manager']['refresh_token']
|
||
|
if 'token_expires' in data['access_manager']:
|
||
|
del data['access_manager']['token_expires']
|
||
|
if 'default' in data['access_manager']:
|
||
|
if (data['access_manager']['default'].get('access_token') or
|
||
|
data['access_manager']['default'].get('refresh_token')) and \
|
||
|
(not data['access_manager']['users']['0'].get('access_token') and
|
||
|
not data['access_manager']['users']['0'].get('refresh_token')):
|
||
|
if 'name' not in data['access_manager']['default']:
|
||
|
data['access_manager']['default']['name'] = 'Default'
|
||
|
data['access_manager']['users']['0'] = data['access_manager']['default']
|
||
|
del data['access_manager']['default']
|
||
|
# end clean up
|
||
|
|
||
|
current_user = data['access_manager']['current_user']
|
||
|
if 'watch_later' not in data['access_manager']['users'][current_user]:
|
||
|
data['access_manager']['users'][current_user]['watch_later'] = ' WL'
|
||
|
if 'watch_history' not in data['access_manager']['users'][current_user]:
|
||
|
data['access_manager']['users'][current_user]['watch_history'] = 'HL'
|
||
|
|
||
|
# ensure all users have uuid
|
||
|
uuids = list()
|
||
|
uuid_update = False
|
||
|
for k in list(data['access_manager']['users'].keys()):
|
||
|
c_uuid = data['access_manager']['users'][k].get('id')
|
||
|
if c_uuid:
|
||
|
uuids.append(c_uuid)
|
||
|
else:
|
||
|
if not uuid_update:
|
||
|
uuid_update = True
|
||
|
|
||
|
if uuid_update:
|
||
|
for k in list(data['access_manager']['users'].keys()):
|
||
|
c_uuid = data['access_manager']['users'][k].get('id')
|
||
|
if not c_uuid:
|
||
|
g_uuid = uuid.uuid4().hex
|
||
|
while g_uuid in uuids:
|
||
|
g_uuid = uuid.uuid4().hex
|
||
|
data['access_manager']['users'][k]['id'] = g_uuid
|
||
|
# end uuid check
|
||
|
|
||
|
self.save(data)
|