70 lines
2.2 KiB
Python
70 lines
2.2 KiB
Python
|
from librus_tricks import exceptions
|
||
|
from librus_tricks.auth import authorizer, load_json as __load_json
|
||
|
from librus_tricks.classes import *
|
||
|
from librus_tricks.core import SynergiaClient
|
||
|
|
||
|
__name__ = 'librus_tricks'
|
||
|
__title__ = 'librus_tricks'
|
||
|
__author__ = 'Krystian Postek'
|
||
|
__version__ = '0.8.1'
|
||
|
|
||
|
|
||
|
def create_session(email, password, fetch_first=True, **kwargs):
|
||
|
"""
|
||
|
Używaj tego tylko kiedy hasło do Portal Librus jest takie samo jako do Synergii.
|
||
|
|
||
|
:param email: str
|
||
|
:param password: str
|
||
|
:param fetch_first: bool or int
|
||
|
:rtype: librus_tricks.core.SynergiaClient
|
||
|
:return: obiekt lub listę obiektów z sesjami
|
||
|
"""
|
||
|
if fetch_first is True:
|
||
|
user = authorizer(email, password)[0]
|
||
|
session = SynergiaClient(user, **kwargs)
|
||
|
elif fetch_first is False:
|
||
|
users = authorizer(email, password)
|
||
|
sessions = [SynergiaClient(user, **kwargs) for user in users]
|
||
|
return sessions
|
||
|
else:
|
||
|
user = authorizer(email, password)[fetch_first]
|
||
|
session = SynergiaClient(user, **kwargs)
|
||
|
|
||
|
return session
|
||
|
|
||
|
|
||
|
def use_json(file=None, **kwargs):
|
||
|
if file is None:
|
||
|
from glob import glob
|
||
|
jsons = glob('*.json')
|
||
|
|
||
|
if jsons.__len__() == 0:
|
||
|
raise FileNotFoundError('Nie znaleziono zapisanych sesji')
|
||
|
if jsons.__len__() > 1:
|
||
|
raise FileExistsError('Zaleziono za dużo zapisanych sesji')
|
||
|
|
||
|
user = __load_json(open(jsons[0], 'r'))
|
||
|
else:
|
||
|
user = __load_json(file)
|
||
|
session = SynergiaClient(user, **kwargs)
|
||
|
session.get('Me')
|
||
|
return session
|
||
|
|
||
|
|
||
|
def minified_login(email, password, **kwargs):
|
||
|
import logging
|
||
|
import warnings
|
||
|
|
||
|
warnings.warn(exceptions.SecurityWarning('Using minified_login in production environment is REAL SECURITY ISSUE!'))
|
||
|
try:
|
||
|
logging.debug('Trying to use json file to create session')
|
||
|
session = use_json(**kwargs)
|
||
|
logging.debug('Created session using json file')
|
||
|
except Exception:
|
||
|
logging.debug('Switching to regular http auth')
|
||
|
session = create_session(email, password, **kwargs)
|
||
|
logging.debug('Created session using http auth')
|
||
|
|
||
|
session.user.dump_credentials()
|
||
|
return session
|