Browse Source

Some auth updates on the text-moderation sample

ryanpbrewster-patch-1
Nicolas Garnier 9 years ago
parent
commit
c945245e39
  1. 2
      text-moderation/README.md
  2. 50
      text-moderation/index.js
  3. 2
      text-moderation/package.json

2
text-moderation/README.md

@ -36,7 +36,7 @@ Below is the trigger rule for the `moderator` function making sure it's triggere
"triggers": {
"database": {
"path": "/messages/$message",
"condition": "!data.exists()" // Only run the function once on new messages
"condition": "!newData.child('sanitized').exists()" // Only run the function if it has not been sanitized
}
}
}

50
text-moderation/index.js

@ -15,48 +15,38 @@
*/
'use strict';
// Create reference to the database authorized as an admin.
var Firebase = require('firebase');
var env = require('./env');
var ref = new Firebase(env.get('firebase.database.url'));
var ref = new Firebase(env.get('firebase.database.url'), 'admin');
ref.authWithCustomToken(env.get('firebase.database.secret'));
// load moderation library.
var stringUtils = require('./moderation-string-utils.js');
stringUtils.loadModerationStringUtils();
// Moderates messages by lowering all uppercase messages and removing swearwords.
exports.moderator = function(context, data) {
// Authorize to the Firebase Database with admin rights.
ref.authWithCustomToken(env.get('firebase.database.secret'), function(error) {
if (error) {
context.done(error);
} else {
console.log("Authorized successfully with admin rights");
// Read the Firebase DB entry that triggered the function.
console.log('Loading firebase path: ' + env.get('firebase.database.url') + data.path);
var messageFirebaseDbRef = ref.child(data.path);
messageFirebaseDbRef.once('value', function(messageData) {
// Read the Firebase DB entry that triggered the function.
console.log('Loading firebase path: ' + env.get('firebase.database.url') + data.path);
var messageFirebaseDbRef = ref.child(data.path);
messageFirebaseDbRef.once('value', function(messageData) {
// Retrieved the message values.
console.log('Retrieved message content: ' + JSON.stringify(messageData.val()));
var messageEntryData = messageData.val();
// Retrieved the message values.
console.log('Retrieved message content: ' + JSON.stringify(messageData.val()));
var messageEntryData = messageData.val();
// Run moderation checks on on the message and moderate if needed.
var moderatedMessage = moderateMessage(messageEntryData.text, context, messageFirebaseDbRef);
// Run moderation checks on on the message and moderate if needed.
var moderatedMessage = moderateMessage(messageEntryData.text, context, messageFirebaseDbRef);
// If message has just been moderated we update the Firebase DB.
if (messageEntryData.text != moderatedMessage) {
console.log('Message has been moderated. Saving to DB: ' + moderatedMessage);
messageFirebaseDbRef.update({text: moderatedMessage, sanitized: true},
context.done);
} else {
console.log('Marking message as sanitized. Saving to DB: ' + moderatedMessage);
messageFirebaseDbRef.update({sanitized: true}, context.done);
}
// Update the Firebase DB with checked message.
console.log('Message has been moderated. Saving to DB: ' + moderatedMessage);
messageFirebaseDbRef.update({text: moderatedMessage, sanitized: true,
moderated: messageEntryData.text != moderatedMessage}, context.done);
// If reading the Firebase DB failed.
}, context.done);
}
});
// If reading the Firebase DB failed.
}, context.done);
};
// Moderates the given message if needed.

2
text-moderation/package.json

@ -3,6 +3,6 @@
"dependencies": {
"bad-words": "^1.3.1",
"capitalize-sentence": "^0.1.2",
"firebase": "^2.3.1"
"firebase": "^2.4.0"
}
}

Loading…
Cancel
Save