From 00136ea418d29f31ead1da17a7e30d79bfee439b Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Sun, 11 Aug 2013 09:10:04 +0000 Subject: inital commit --- padlite.py | 184 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100644 padlite.py (limited to 'padlite.py') diff --git a/padlite.py b/padlite.py new file mode 100644 index 0000000..767f848 --- /dev/null +++ b/padlite.py @@ -0,0 +1,184 @@ +import httplib +import urllib +import json + +class APIException(Exception): + def __init__(self, response): + self.code = response['code'] + self.message = response['message'] + + def __str__(self): + return "Code %s: %s" % (self.code, self.message) + +class PadLite: + + def __init__(self, apikey, host, port=None, ssl=False): + self.apikey = apikey + self.host = host + self.port = port + self.ssl = ssl + + if self.port is None: + if self.ssl: + self.port = 443 + else: + self.port = 80 + + def _getConnection(self): + if self.ssl: + return httplib.HTTPSConnection(self.host, self.port) + return httplib.HTTPConnection(self.host, self.port) + + def _apiCall(self, url, **kwargs): + conn = self._getConnection() + + args = dict((k,v) for k,v in kwargs.iteritems() if v is not None) + args['apikey'] = self.apikey + conn.request('GET', '%s?%s' % (url, urllib.urlencode(args))) + + resp = conn.getresponse() + if resp.status != 200: + return None + response = json.load(resp) + + if response['code'] != 0: + raise APIException(response) + + return response['data'] + + # + # API Version 1 + # + def createGroup(self): + return self._apiCall('/api/1/createGroup')['groupID'] + + def createGroupIfNotExistsFor(self, groupMapper): + return self._apiCall('/api/1/createGroupIfNotExistsFor', groupMapper=groupMapper)['groupID'] + + def deleteGroup(self, groupID): + return self._apiCall('/api/1/deleteGroup', groupID=groupID) + + def listPads(self, groupID): + return self._apiCall('/api/1/listPads', groupID=groupID) + + def createPad(self, padID, text): + return self._apiCall('/api/1/createPad', padID=padID, text=text) + + def createGroupPad(self, groupID, padName, text): + return self._apiCall('/api/1/createGroupPad', groupID=groupID, padName=padName, text=text) + + def createAuthor(self, name): + return self._apiCall('/api/1/createAuthor', name=name) + + def createAuthorIfNotExistsFor(self, authorMapper, name): + return self._apiCall('/api/1/createAuthorIfNotExistsFor', authorMapper=authorMapper, name=name) + + def listPadsOfAuthor(self, authorID): + return self._apiCall('/api/1/listPadsOfAuthor', authorID=authorID) + + def createSession(self, groupID, authorID, validUntil): + return self._apiCall('/api/1/createSession', groupID=groupID, authorID=authorID, validUntil=validUntil) + + def deleteSession(self, sessionID): + return self._apiCall('/api/1/deleteSession', sessionID=sessionID) + + def getSessionInfo(self, sessionID): + return self._apiCall('/api/1/getSessionInfo', sessionID=sessionID) + + def listSessionsOfGroup(self, groupID): + return self._apiCall('/api/1/listSessionsOfGroup', groupID=groupID) + + def listSessionsOfAuthor(self, authorID): + return self._apiCall('/api/1/listSessionsOfAuthor', authorID=authorID) + + def getText(self, padID, rev): + return self._apiCall('/api/1/getText', padID=padID, rev=rev) + + def setText(self, padID, text): + return self._apiCall('/api/1/setText', padID=padID, text=text) + + def getHTML(self, padID, rev): + return self._apiCall('/api/1/getHTML', padID=padID, rev=rev) + + def setHTML(self, padID, html): + return self._apiCall('/api/1/setHTML', padID=padID, html=html) + + def getRevisionsCount(self, padID): + return self._apiCall('/api/1/getRevisionsCount', padID=padID) + + def getLastEdited(self, padID): + return self._apiCall('/api/1/getLastEdited', padID=padID) + + def deletePad(self, padID): + return self._apiCall('/api/1/deletePad', padID=padID) + + def getReadOnlyID(self, padID): + return self._apiCall('/api/1/getReadOnlyID', padID=padID) + + def setPublicStatus(self, padID, publicStatus): + return self._apiCall('/api/1/setPublicStatus', padID=padID, publicStatus=publicStatus) + + def getPublicStatus(self, padID): + return self._apiCall('/api/1/getPublicStatus', padID=padID) + + def setPassword(self, padID, password): + return self._apiCall('/api/1/setPassword', padID=padID, password=password) + + def isPasswordProtected(self, padID): + return self._apiCall('/api/1/isPasswordProtected', padID=padID) + + def listAuthorsOfPad(self, padID): + return self._apiCall('/api/1/listAuthorsOfPad', padID=padID) + + def padUsersCount(self, padID): + return self._apiCall('/api/1/padUsersCount', padID=padID) + + + # + # API Version 1.1 + # + def getAuthorName(self, authorID): + return self._apiCall('/api/1.1/getAuthorName', authorID=authorID) + + def padUsers(self, padID): + return self._apiCall('/api/1.1/padUsers', padID=padID) + + def sendClientsMessage(self, padID, msg): + return self._apiCall('/api/1.1/sendClientsMessage', padID=padID, msg=msg) + + def listAllGroups(self): + return self._apiCall('/api/1.1/listAllGroups')['groupIDs'] + + + # + # API Version 1.2 + # + def checkToken(self): + return self._apiCall('/api/1.2/checkToken') + + + # + # API Version 1.2.1 + # + def listAllPads(self): + return self._apiCall('/api/1.2.1/listAllPads')['padIDs'] + + + # + # API Version 1.2.7 + # + def getChatHistory(self, padID, start=None, end=None): + return self._apiCall('/api/1.2.7/getChatHistory', padID=padID, start=start, end=end) + + def getChatHead(self, padID): + return self._apiCall('/api/1.2.7/getChatHead', padID=padID) + + + # + # API Version 1.2.8 + # + def getRevisionsCount(self, padID): + return self._apiCall('/api/1.2.8/getRevisionsCount', padID=padID) + + def getRevisionChangeset(self, padID, rev): + return self._apiCall('/api/1.2.8/getRevisionChangeset', padID=padID, rev=rev) -- cgit v1.2.3-1-g7c22