summaryrefslogtreecommitdiff
path: root/src/node/db
diff options
context:
space:
mode:
authorLuc Didry <luc@didry.org>2015-02-25 01:04:27 +0100
committerLuc Didry <luc@didry.org>2015-02-25 01:04:27 +0100
commit845788c39df0b9674c516e7673a8ba7bb43495b1 (patch)
treed003a308776ddb335a1f4662f23d1c55d7b1347e /src/node/db
parenta08c50a77dc897009f9e40d9d0bdab0a219d59fa (diff)
downloadetherpad-lite-845788c39df0b9674c516e7673a8ba7bb43495b1.zip
Add a saveRevision API function
Calling saveRevision create an author which name is "API"
Diffstat (limited to 'src/node/db')
-rw-r--r--src/node/db/API.js73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/node/db/API.js b/src/node/db/API.js
index ab8a1d40..69a380c7 100644
--- a/src/node/db/API.js
+++ b/src/node/db/API.js
@@ -556,6 +556,79 @@ exports.listSavedRevisions = function(padID, callback)
}
/**
+saveRevision(padID) returns the list of saved revisions of this pad
+
+Example returns:
+
+{code: 0, message:"ok", data: null}
+{code: 1, message:"padID does not exist", data: null}
+*/
+exports.saveRevision = function(padID, rev, callback)
+{
+ //check if rev is set
+ if(typeof rev == "function")
+ {
+ callback = rev;
+ rev = undefined;
+ }
+
+ //check if rev is a number
+ if(rev !== undefined && typeof rev != "number")
+ {
+ //try to parse the number
+ if(!isNaN(parseInt(rev)))
+ {
+ rev = parseInt(rev);
+ }
+ else
+ {
+ callback(new customError("rev is not a number", "apierror"));
+ return;
+ }
+ }
+
+ //ensure this is not a negativ number
+ if(rev !== undefined && rev < 0)
+ {
+ callback(new customError("rev is a negativ number","apierror"));
+ return;
+ }
+
+ //ensure this is not a float value
+ if(rev !== undefined && !is_int(rev))
+ {
+ callback(new customError("rev is a float value","apierror"));
+ return;
+ }
+
+ //get the pad
+ getPadSafe(padID, true, function(err, pad)
+ {
+ if(ERR(err, callback)) return;
+
+ //the client asked for a special revision
+ if(rev !== undefined)
+ {
+ //check if this is a valid revision
+ if(rev > pad.getHeadRevisionNumber())
+ {
+ callback(new customError("rev is higher than the head revision of the pad","apierror"));
+ return;
+ }
+ } else {
+ rev = pad.getHeadRevisionNumber();
+ }
+
+ authorManager.createAuthor('API', function(err, author) {
+ if(ERR(err, callback)) return;
+
+ pad.addSavedRevision(rev, author.authorID, 'Saved through API call');
+ callback();
+ });
+ });
+}
+
+/**
getLastEdited(padID) returns the timestamp of the last revision of the pad
Example returns: