hs.admin.api/src/hs/admin/api/session.py
2016-03-27 14:15:49 +02:00

43 lines
1.1 KiB
Python

""" This module provides a class that implements a remote user session.
"""
from requests import delete, post
from .exceptions import LoginError, SessionError
class Session(object):
""" This class implements a remote user session.
"""
def __init__(self, provider, service, username, password):
payload = {'username': username,
'password': password}
result = post(provider, data=payload)
if result.status_code != 201:
raise LoginError('Acquisition of ticket granting ticket failed.')
self.service = service
self.tgt = result.headers['location']
self.user = username
def __exit__(self, exc_type, exc_value, traceback):
delete(self.tgt)
def get_ticket(self):
""" Returns an one-time ticket for a remote user action """
payload = {'service': self.service}
result = post(self.tgt, data=payload)
if result.status_code != 200:
raise SessionError('Acquisition of session ticket failed.')
return result.text
def get_user(self):
""" Returns the user name """
return self.user