43 lines
1.1 KiB
Python
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
|