Merge pull request #1408 from mluto/chat-api
Added API-Endpoints for chat
This commit is contained in:
commit
994366750f
3 changed files with 155 additions and 0 deletions
|
@ -292,6 +292,34 @@ returns the text of a pad formatted as HTML
|
||||||
* `{code: 0, message:"ok", data: {html:"Welcome Text<br>More Text"}}`
|
* `{code: 0, message:"ok", data: {html:"Welcome Text<br>More Text"}}`
|
||||||
* `{code: 1, message:"padID does not exist", data: null}`
|
* `{code: 1, message:"padID does not exist", data: null}`
|
||||||
|
|
||||||
|
### Chat
|
||||||
|
#### getChatHistory(padID, [start, end])
|
||||||
|
* API >= 1.2.7
|
||||||
|
|
||||||
|
returns
|
||||||
|
|
||||||
|
* a part of the chat history, when `start` and `end` are given
|
||||||
|
* the whole chat histroy, when no extra parameters are given
|
||||||
|
|
||||||
|
|
||||||
|
*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}`
|
||||||
|
|
||||||
|
#### getChatHead(padID)
|
||||||
|
* API >= 1.2.7
|
||||||
|
|
||||||
|
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}`
|
||||||
|
|
||||||
|
|
||||||
### Pad
|
### Pad
|
||||||
Group pads are normal pads, but with the name schema GROUPID$PADNAME. A security manager controls access of them and its forbidden for normal pads to include a $ in the name.
|
Group pads are normal pads, but with the name schema GROUPID$PADNAME. A security manager controls access of them and its forbidden for normal pads to include a $ in the name.
|
||||||
|
|
||||||
|
|
|
@ -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 */
|
/**PAD FUNCTIONS */
|
||||||
/*****************/
|
/*****************/
|
||||||
|
@ -567,6 +638,23 @@ exports.checkToken = function(callback)
|
||||||
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 */
|
/** INTERNAL HELPER FUNCTIONS */
|
||||||
|
|
|
@ -174,6 +174,45 @@ var version =
|
||||||
, "listAllGroups" : []
|
, "listAllGroups" : []
|
||||||
, "checkToken" : []
|
, "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"]
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue