summaryrefslogtreecommitdiffstats
path: root/padlite.py
diff options
context:
space:
mode:
authorAlexander Sulfrian <alex@spline.inf.fu-berlin.de>2013-08-11 09:10:04 +0000
committerpad <pad@vm-pad-b.spline.inf.fu-berlin.de>2013-08-11 09:10:04 +0000
commit00136ea418d29f31ead1da17a7e30d79bfee439b (patch)
tree1c3d8f5744e951331e8b8f859d393e7bb8df4a72 /padlite.py
downloadpadlite-teams-00136ea418d29f31ead1da17a7e30d79bfee439b.tar.gz
padlite-teams-00136ea418d29f31ead1da17a7e30d79bfee439b.tar.bz2
padlite-teams-00136ea418d29f31ead1da17a7e30d79bfee439b.zip
inital commit
Diffstat (limited to 'padlite.py')
-rw-r--r--padlite.py184
1 files changed, 184 insertions, 0 deletions
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)