Beispiel #1
0
class Rooms:
    ROOMS_URL = "https://api.ciscospark.com/v1/rooms"

    def __init__(self, token, timeout=None):
        self.restReq = RestReq(token, timeout)

    def getRooms(self, max=None, showSipAddress=None):
        if showSipAddress:
            showSipAddress = 'true'
        if not showSipAddress:
            showSipAddress = 'false'
        payload = {'max': max, 'showSipAddress': showSipAddress}
        response = self.restReq.get(self.ROOMS_URL, payload=payload)
        if response.status_code != 200:
            response.raise_for_status()
        else:
            room_array = []
            results = response.json()
            for r in results['items']:
                room_array.append(Room(r.get('id'), r.get('title'), r.get('created'),
                                       r.get('lastActivity'), r.get('sipAddress')))
            return room_array

    def getById(self, id, showSipAddress=False):
        payload = {'showSipAddress': showSipAddress}
        response = self.restReq.get(self.ROOMS_URL, id=id, payload=payload)
        if response.status_code != 200:
            response.raise_for_status()
        else:
            r = response.json()
            return Room(r.get('id'), r.get('title'), r.get('created'), r.get('lastActivity'),
                        r.get('sipAddress'))

    def newRoom(self, title):
        payload = {'title': title}
        response = self.restReq.post(self.ROOMS_URL, payload=payload)
        if response.status_code != 200:
            response.raise_for_status()
        else:
            r = response.json()
            return Room(r.get('id'), r.get('title'), r.get('created'), r.get('lastActivity'),
                        r.get('sipAddress'))

    def updateRoom(self, id, title):
        payload = {'title': title}
        response = self.restReq.put(self.ROOMS_URL, id=id, payload=payload)
        if response.status_code != 200:
            response.raise_for_status()
        else:
            r = response.json()
            return Room(r.get('id'), r.get('title'), r.get('created'), r.get('lastActivity'),
                        r.get('sipAddress'))

    def deleteRoom(self, id):
        response = self.restReq.delete(self.ROOMS_URL, id=id)
        if response.status_code != 204:
            response.raise_for_status()
        else:
            return
Beispiel #2
0
class People:
    PEOPLE_URL = "https://api.ciscospark.com/v1/people"

    def __init__(self, token, timeout=None):
        self.restReq = RestReq(token, timeout=timeout)

    def getPeople(self, email=None, displayName=None, max=None):
        """
        Get a list of People using email address or displayName.
        Use only one of email address or displayName - not both.
        max can be used to restrict the number of People returned.
        """
        if email and displayName:
            raise Exception('Use either email address or displayName for getPeople, not both!')

        payload = {'email': email, 'displayName': displayName, 'max': max}
        response = self.restReq.get(self.PEOPLE_URL, payload=payload)

        if response.status_code != 200:
            response.raise_for_status()
        else:
            person_array = []
            results = response.json()
            for r in results['items']:
                person_array.append(Person(r.get('id'), r.get('emails'), r.get('displayName'),
                                           r.get('avatar'), r.get('created')))
            return person_array

    def getPeopleByEmail(self, email, max=None):
        """Get People by email address."""
        return self.getPeople(email=email, max=max)

    def getPeopleByDisplayName(self, displayName, max=None):
        """Get People by displayName"""
        return self.getPeople(displayName=displayName, max=max)

    def getPersonDetails(self, id):
        """Get details of a single person using an person id."""
        response = self.restReq.get(self.PEOPLE_URL, id=id)
        if response.status_code != 200:
            response.raise_for_status()
        else:
            r = response.json()
            return Person(r.get('id'), r.get('emails'), r.get('displayName'), r.get('avatar'),
                          r.get('created'))

    def getMe(self):
        """Get personal details of 'me' using token."""
        return self.getPersonDetails('me')
Beispiel #3
0
 def __init__(self, token, timeout=None):
     self.restReq = RestReq(token, timeout)
Beispiel #4
0
class Messages:
    MESSAGES_URL = "https://api.ciscospark.com/v1/messages"

    def __init__(self, token, timeout=None):
        self.restReq = RestReq(token, timeout)

    def getMessagesByRoom(self, roomId, before=None, beforeMessage=None, max=None):
        payload = {'roomId': roomId, 'before': before, 'beforeMessage': beforeMessage, 'max': max}
        response = self.restReq.get(self.MESSAGES_URL, payload=payload)
        if response.status_code != 200:
            response.raise_for_status()
        else:
            message_array = []
            results = response.json()
            for r in results['items']:
                message_array.append(Message(r.get('id'), r.get('roomId'), r.get('personId'),
                                             r.get('personEmail'), r.get('created'),
                                             r.get('text'), r.get('files')))
            return message_array

    def sendMessageToRoom(self, roomId, text, files=None):
        payload = {'roomId': roomId, 'text': text, 'files': files}
        response = self.restReq.post(self.MESSAGES_URL, payload=payload)
        if response.status_code != 200:
            response.raise_for_status()
        else:
            r = response.json()
            return Message(r.get('id'), r.get('roomId'), r.get('personId'), r.get('personEmail'),
                           r.get('created'), r.get('text'), r.get('files'))

    def sendMessageToPerson(self, text, toPersonId=None, toPersonEmail=None, files=None):
        if toPersonId and toPersonEmail:
            raise Exception('use toPersonId or toPersonEmail - not both!')
        payload = {'text': text, 'toPersonId': toPersonId, 'toPersonEmail': toPersonEmail,
                   'files': files}
        response = self.restReq.post(self.MESSAGES_URL, payload=payload)
        if response.status_code != 200:
            response.raise_for_status()
        else:
            r = response.json()
            return Message(r.get('id'), r.get('roomId'), r.get('personId'), r.get('personEmail'),
                           r.get('created'), r.get('text'), r.get('files'))

    def sendMessageToPersonId(self, text, toPersonId, files=None):
        return self.sendMessageToPerson(text, toPersonId=toPersonId, files=files)

    def sendMessageToPersonEmail(self, text, toPersonEmail, files=None):
        return self.sendMessageToPerson(text, toPersonEmail=toPersonEmail, files=files)

    def getMessageById(self, messageId):
        response = self.restReq.get(self.MESSAGES_URL, id=messageId)
        if response.status_code != 200:
            response.raise_for_status()
        else:
            r = response.json()
            return Message(r.get('id'), r.get('roomId'), r.get('personId'), r.get('personEmail'),
                           r.get('created'), r.get('text'), r.get('files'))

    def deleteMessage(self, messageId):
        response = self.restReq.delete(self.MESSAGES_URL, id=messageId)
        if response.status_code != 204:
            response.raise_for_status()
        else:
            return
class Memberships:
    MEMBERSHIPS_URL = "https://api.ciscospark.com/v1/memberships"

    def __init__(self, token, timeout=None):
        self.restReq = RestReq(token, timeout)

    def getMemberships(self, roomId=None, personId=None, personEmail=None, max=None):
        """
        Get an array of all of my Memberships.
        
        This request can be queryied by roomId, personId, or personEmail address.
        The number of items return can be restricted by max.
        """
        if personId is not None and personEmail is not None:
            raise Exception('personId and personEmail are NOT None!')
        payload = {'roomId': roomId, 'personId': personId, 'personEmail': personEmail, 'max': max}
        response = self.restReq.get(self.MEMBERSHIPS_URL, payload)
        if response.status_code != 200:
            response.raise_for_status()
        else:
            membership_array = []
            results = response.json()
            for r in results['items']:
                membership_array.append(Membership(r.get('id'), r.get('personId'),
                                                   r.get('personEmail'), r.get('roomId'),
                                                   r.get('isModerator'), r.get('isMonitor'),
                                                   r.get('created')))
            return membership_array

    def getMembershipsByRoom(self, roomId):
        return self.getMemberships(roomId=roomId)

    def getMembershipsByPersonId(self, personId):
        return self.getMemberships(personId=personId)

    def getMembershipsByPersonEmail(self, personEmail):
        return self.getMemberships(personEmail=personEmail)

    def createMembershipToRoom(self, roomId, personId=None, personEmail=None, isModerator=None):
        """
        if personId == None and personEmail == None:
            raise Exception("personId or personEmail should not be None")
        if personId != None and personEmail != None:
            raise Exception("personId or personEmail can be set - not both!")
        """
        payload = {'roomId': roomId, 'personId': personId, 'personEmail': personEmail,
                   'isModerator': isModerator}
        response = self.restReq.post(self.MEMBERSHIPS_URL, payload)
        if response.status_code != 200:
            response.raise_for_status()
        else:
            r = response.json()
            return Membership(r.get('id'), r.get('personId'), r.get('personEmail'), r.get('roomId'),
                              r.get('isModerator'), r.get('isMonitor'), r.get('created'))

    def createMembershipToRoomByPersonId(self, roomId, personId, isModerator=None):
        return self.createMembershipToRoom(roomId, personId=personId, isModerator=isModerator)

    def createMembershipToRoomByPersonEmail(self, roomId, personEmail, isModerator=None):
        return self.createMembershipToRoom(roomId, personEmail=personEmail, isModerator=isModerator)

    def getMembershipDetails(self, membershipId):
        response = self.restReq.get(self.MEMBERSHIPS_URL, id=membershipId)
        if response.status_code != 200:
            response.raise_for_status()
        else:
            r = response.json()
            return Membership(r.get('id'), r.get('personId'), r.get('personEmail'), r.get('roomId'),
                              r.get('isModerator'), r.get('isMonitor'), r.get('created'))

    def updateMembershipModerator(self, membershipId, isModerator):
        payload = {'isModerator': isModerator}
        response = self.restReq.put(self.MEMBERSHIPS_URL, id=membershipId, payload=payload)
        if response.status_code != 200:
            response.raise_for_status()
        else:
            r = response.json()
            return Membership(r.get('id'), r.get('personId'), r.get('personEmail'), r.get('roomId'),
                              r.get('isModerator'), r.get('isMonitor'), r.get('created'))

    def deleteMembership(self, membershipId):
        response = self.restReq.delete(self.MEMBERSHIPS_URL, id=membershipId)
        if response.status_code != 204:
            response.raise_for_status()
        else:
            return
Beispiel #6
0
class WebHooks(object):
    """Manipulate Cisco Spark Webhooks."""
    HOOK_URL = "https://api.ciscospark.com/v1/webhooks"

    def __init__(self, token, timeout=None):
        self.restReq = RestReq(token, timeout=timeout)

    def getWebHooks(self, max=None):
        """Return list of existing webhooks as a list of Hook objects."""
        payload = {'max': max}
        response = self.restReq.get(self.HOOK_URL, payload=payload)

        if response.status_code != 200:
            response.raise_for_status()
        else:
            hook_array = []
            results = response.json()
            for r in results['items']:
                hook_array.append(
                    Hook(r.get('id'), r.get('name'), r.get('resource'), r.get('event'),
                         r.get('targetUrl'), r.get('filter')))

            return hook_array

    def getById(self, hookId):
        """Return Hook object corresponding to the ID provided."""
        response = self.restReq.get(self.HOOK_URL, id=hookId)

        if response.status_code != 200:
            response.raise_for_status()
        else:
            r = response.json()
            return Hook(r.get('id'), r.get('name'), r.get('resource'), r.get('event'),
                        r.get('targetUrl'), r.get('filter'))

    def getByName(self, name, max=None):
        """Return list of Hook objects corresponding to the name provided."""
        hook_array = self.getWebHooks(max=max)
        filtered_array = [h for h in hook_array if h.name == name]
        return filtered_array

    def getByUrl(self, url, max=None):
        """Return list of Hook objects corresponding to the url provided."""
        hook_array = self.getWebHooks(max=max)
        filtered_array = [h for h in hook_array if h.targetUrl == url]
        return filtered_array

    def newWebHook(self, name, targetUrl, resource, event, filt):
        """Create Spark webhook."""
        payload = {'name': name, 'targetUrl': targetUrl, 'resource': resource, 'event': event,
                   'filter': filt}
        response = self.restReq.post(self.HOOK_URL, payload=payload)

        if response.status_code != 200:
            response.raise_for_status()
        else:
            r = response.json()
            return Hook(r.get('id'), r.get('name'), r.get('resource'), r.get('event'),
                        r.get('targetUrl'), r.get('filter'))

    def updateWebHook(self, id, name=None, targetUrl=None):
        """
        Update existing webhook.
        Both name and targetUrl are required. For convenience, if one is not provided, it will
        be set to the existing value
        """
        if not name:
            name = self.getById(id).name
        if not targetUrl:
            targetUrl = self.getById(id).targetUrl

        payload = {'name': name, 'targetUrl': targetUrl}
        response = self.restReq.put(self.HOOK_URL, id=id, payload=payload)
        if response.status_code != 200:
            response.raise_for_status()
        else:
            r = response.json()
            return Hook(r.get('id'), r.get('name'), r.get('resource'), r.get('event'),
                        r.get('targetUrl'), r.get('filter'))

    def deleteWebHook(self, hookId):
        """Delete webhook corresponding to the ID provided."""
        response = self.restReq.delete(self.HOOK_URL, id=hookId)
        if response.status_code != 204:
            response.raise_for_status()
        else:
            return True