#!/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 AuthRestApi(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 = AuthRestApi('dm', 'dm', 'zagreb.svdev.net', 22236, 'http') print api.authenticateUser('sveseli', 'sv')