Forked from
DM / dm-docs
261 commits behind, 824 commits ahead of the upstream repository.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
authDsApi.py 2.07 KiB
#!/usr/bin/env python
import os
import json
import urllib
from dm.common.utility.encoder import Encoder
from dm.common.exceptions.dmException import DmException
from dm.common.exceptions.invalidRequest import InvalidRequest
from dm.common.objects.authorizationPrincipal import AuthorizationPrincipal
from dm.common.objects.dmSession import DmSession
from dsRestApi import DsRestApi
class AuthDsApi(DsRestApi):
def __init__(self, username=None, password=None, host=None, port=None, protocol=None):
DsRestApi.__init__(self, username, password, host, port, protocol)
@DsRestApi.execute
def getAuthorizationPrincipal(self, username):
if username is None:
raise InvalidRequest('Username must be provided.')
url = '%s/authorizationPrincipals/%s' % (self.getContextRoot(), username)
self.logger.debug('Retrieving principal for user %s' % (username))
responseData = self.sendSessionRequest(url=url, method='GET')
return AuthorizationPrincipal(responseData)
@DsRestApi.execute
def addSession(self, sessionId, sessionInfo):
if sessionId is None:
raise InvalidRequest('Session id must be provided.')
if sessionInfo is None:
raise InvalidRequest('Session info must be provided.')
url = '%s/sessions/%s' % (self.getContextRoot(), sessionId)
url += '?sessionInfo=%s' % Encoder.encode(json.dumps(sessionInfo))
responseData = self.sendSessionRequest(url=url, method='POST')
return DmSession(responseData)
@DsRestApi.execute
def checkSession(self, sessionId):
if sessionId is None:
raise InvalidRequest('Session id must be provided.')
url = '%s/sessions/%s' % (self.getContextRoot(), sessionId)
responseData = self.sendSessionRequest(url=url, method='PUT')
return DmSession(responseData)
#######################################################################
# Testing.
if __name__ == '__main__':
api = AuthDsApi('dm', 'dm', 'zagreb.svdev.net', 22236, 'http')
print api.authenticateUser('sveseli', 'sv')