コード例 #1
0
ファイル: rooms.py プロジェクト: baryonyx5/pyCiscoSparkAPI
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
コード例 #2
0
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
コード例 #3
0
ファイル: messages.py プロジェクト: baryonyx5/pyCiscoSparkAPI
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
コード例 #4
0
ファイル: webhooks.py プロジェクト: baryonyx5/pyCiscoSparkAPI
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