#!/usr/bin/env python

import os
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.userInfo import UserInfo
from dsRestApi import DsRestApi

class UserRestApi(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 getUsers(self):
        url = '%s/users' % (self.getContextRoot())
        responseData = self.sendSessionRequest(url=url, method='GET')
        return self.toDmObjectList(responseData, UserInfo)

    @DsRestApi.execute
    def getUserById(self, id):
        if id is None:
            raise InvalidRequest('User id must be provided.')
        url = '%s/users/%s' % (self.getContextRoot(), id)
        responseData = self.sendSessionRequest(url=url, method='GET')
        return UserInfo(responseData)

    @DsRestApi.execute
    def getUserByUsername(self, username):
        if username is None:
            raise InvalidRequest('Username must be provided.')
        url = '%s/usersByUsername/%s' % (self.getContextRoot(), username)
        responseData = self.sendSessionRequest(url=url, method='GET')
        return UserInfo(responseData)

#######################################################################
# Testing.

if __name__ == '__main__':
    pass