summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormluto <m@luto.at>2013-01-26 14:35:26 +0100
committermluto <m@luto.at>2013-01-26 14:35:26 +0100
commitcb2b93b1339d27a21e3937ab58ea1614d7118b04 (patch)
tree8733e495fae23246974fde479cbb86f44fb7a927 /src
parentcf1bba8e65c55ad218ead244bc44c60b926970f4 (diff)
downloadetherpad-lite-cb2b93b1339d27a21e3937ab58ea1614d7118b04.zip
Added getChatHistory and getChatHead (api+code+doc)
Diffstat (limited to 'src')
-rw-r--r--src/node/db/API.js88
-rw-r--r--src/node/handler/APIHandler.js39
2 files changed, 127 insertions, 0 deletions
diff --git a/src/node/db/API.js b/src/node/db/API.js
index 9cad415d..cee63a9e 100644
--- a/src/node/db/API.js
+++ b/src/node/db/API.js
@@ -277,6 +277,77 @@ exports.setHTML = function(padID, html, callback)
});
}
+/******************/
+/**CHAT FUNCTIONS */
+/******************/
+
+/**
+getChatHistory(padId, start, end), returns a part of or the whole chat-history of this pad
+
+Example returns:
+
+{"code":0,"message":"ok","data":{"messages":[{"text":"foo","userId":"a.foo","time":1359199533759,"userName":"test"},
+ {"text":"bar","userId":"a.foo","time":1359199534622,"userName":"test"}]}}
+
+{code: 1, message:"start is higher or equal to the current chatHead", data: null}
+
+{code: 1, message:"padID does not exist", data: null}
+*/
+exports.getChatHistory = function(padID, start, end, callback)
+{
+ if(start && end)
+ {
+ if(start < 0)
+ {
+ callback(new customError("start is below zero","apierror"));
+ return;
+ }
+ if(end < 0)
+ {
+ callback(new customError("end is below zero","apierror"));
+ return;
+ }
+ if(start > end)
+ {
+ callback(new customError("start is higher than end","apierror"));
+ return;
+ }
+ }
+
+ //get the pad
+ getPadSafe(padID, true, function(err, pad)
+ {
+ if(ERR(err, callback)) return;
+ var chatHead = pad.chatHead;
+
+ // fall back to getting the whole chat-history if a parameter is missing
+ if(!start || !end)
+ {
+ start = 0;
+ end = pad.chatHead - 1;
+ }
+
+ if(start >= chatHead)
+ {
+ callback(new customError("start is higher or equal to the current chatHead","apierror"));
+ return;
+ }
+ if(end >= chatHead)
+ {
+ callback(new customError("end is higher or equal to the current chatHead","apierror"));
+ return;
+ }
+
+ // the the whole message-log and return it to the client
+ pad.getChatMessages(start, end,
+ function(err, msgs)
+ {
+ if(ERR(err, callback)) return;
+ callback(null, {messages: msgs});
+ });
+ });
+}
+
/*****************/
/**PAD FUNCTIONS */
/*****************/
@@ -567,6 +638,23 @@ exports.checkToken = function(callback)
callback();
}
+/**
+getChatHead(padID) returns the chatHead (last number of the last chat-message) of the pad
+
+Example returns:
+
+{code: 0, message:"ok", data: {chatHead: 42}}
+{code: 1, message:"padID does not exist", data: null}
+*/
+exports.getChatHead = function(padID, callback)
+{
+ //get the pad
+ getPadSafe(padID, true, function(err, pad)
+ {
+ if(ERR(err, callback)) return;
+ callback(null, {chatHead: pad.chatHead});
+ });
+}
/******************************/
/** INTERNAL HELPER FUNCTIONS */
diff --git a/src/node/handler/APIHandler.js b/src/node/handler/APIHandler.js
index ae93e933..6085edbf 100644
--- a/src/node/handler/APIHandler.js
+++ b/src/node/handler/APIHandler.js
@@ -174,6 +174,45 @@ var version =
, "listAllGroups" : []
, "checkToken" : []
}
+, "1.2.7":
+ { "createGroup" : []
+ , "createGroupIfNotExistsFor" : ["groupMapper"]
+ , "deleteGroup" : ["groupID"]
+ , "listPads" : ["groupID"]
+ , "listAllPads" : []
+ , "createPad" : ["padID", "text"]
+ , "createGroupPad" : ["groupID", "padName", "text"]
+ , "createAuthor" : ["name"]
+ , "createAuthorIfNotExistsFor": ["authorMapper" , "name"]
+ , "listPadsOfAuthor" : ["authorID"]
+ , "createSession" : ["groupID", "authorID", "validUntil"]
+ , "deleteSession" : ["sessionID"]
+ , "getSessionInfo" : ["sessionID"]
+ , "listSessionsOfGroup" : ["groupID"]
+ , "listSessionsOfAuthor" : ["authorID"]
+ , "getText" : ["padID", "rev"]
+ , "setText" : ["padID", "text"]
+ , "getHTML" : ["padID", "rev"]
+ , "setHTML" : ["padID", "html"]
+ , "getRevisionsCount" : ["padID"]
+ , "getLastEdited" : ["padID"]
+ , "deletePad" : ["padID"]
+ , "getReadOnlyID" : ["padID"]
+ , "setPublicStatus" : ["padID", "publicStatus"]
+ , "getPublicStatus" : ["padID"]
+ , "setPassword" : ["padID", "password"]
+ , "isPasswordProtected" : ["padID"]
+ , "listAuthorsOfPad" : ["padID"]
+ , "padUsersCount" : ["padID"]
+ , "getAuthorName" : ["authorID"]
+ , "padUsers" : ["padID"]
+ , "sendClientsMessage" : ["padID", "msg"]
+ , "listAllGroups" : []
+ , "checkToken" : []
+ , "getChatHistory" : ["padID"]
+ , "getChatHistory" : ["padID", "start", "end"]
+ , "getChatHead" : ["padID"]
+ }
};
/**