parent
a958c66249
commit
cc65e98940
6 changed files with 87 additions and 13 deletions
|
@ -9,6 +9,7 @@ var DocumentHandler = function(options) {
|
|||
this.keyLength = options.keyLength || DocumentHandler.defaultKeyLength;
|
||||
this.maxLength = options.maxLength; // none by default
|
||||
this.store = options.store;
|
||||
this.keyGenerator = options.keyGenerator;
|
||||
};
|
||||
|
||||
DocumentHandler.defaultKeyLength = 10;
|
||||
|
@ -87,7 +88,7 @@ DocumentHandler.prototype.handlePost = function(request, response) {
|
|||
|
||||
// Get a random key that hasn't been already used
|
||||
DocumentHandler.prototype.chooseKey = function(callback) {
|
||||
var key = this.randomKey();
|
||||
var key = this.keyGenerator.createKey(this.keyLength);
|
||||
var _this = this;
|
||||
this.store.get(key, function(ret) {
|
||||
if (ret) {
|
||||
|
@ -98,14 +99,4 @@ DocumentHandler.prototype.chooseKey = function(callback) {
|
|||
});
|
||||
};
|
||||
|
||||
// Generate a random key
|
||||
DocumentHandler.prototype.randomKey = function() {
|
||||
var text = '';
|
||||
var keyspace = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
||||
for (var i = 0; i < this.keyLength; i++) {
|
||||
text += keyspace.charAt(Math.floor(Math.random() * keyspace.length));
|
||||
}
|
||||
return text;
|
||||
};
|
||||
|
||||
module.exports = DocumentHandler;
|
||||
|
|
32
lib/key_generators/phonetic.js
Normal file
32
lib/key_generators/phonetic.js
Normal file
|
@ -0,0 +1,32 @@
|
|||
// Draws inspiration from pwgen and http://tools.arantius.com/password
|
||||
var PhoneticKeyGenerator = function(options) {
|
||||
// No options
|
||||
};
|
||||
|
||||
// Generate a phonetic key
|
||||
PhoneticKeyGenerator.prototype.createKey = function(keyLength) {
|
||||
var text = '';
|
||||
for (var i = 0; i < keyLength; i++) {
|
||||
text += (i % 2 == 0) ? this.randConsonant() : this.randVowel();
|
||||
}
|
||||
return text;
|
||||
};
|
||||
|
||||
PhoneticKeyGenerator.consonants = 'bcdfghjklmnpqrstvwxy';
|
||||
PhoneticKeyGenerator.vowels = 'aeiou';
|
||||
|
||||
// Get an random vowel
|
||||
PhoneticKeyGenerator.prototype.randVowel = function() {
|
||||
return PhoneticKeyGenerator.vowels[
|
||||
Math.floor(Math.random() * PhoneticKeyGenerator.vowels.length)
|
||||
];
|
||||
};
|
||||
|
||||
// Get an random consonant
|
||||
PhoneticKeyGenerator.prototype.randConsonant = function() {
|
||||
return PhoneticKeyGenerator.consonants[
|
||||
Math.floor(Math.random() * PhoneticKeyGenerator.consonants.length)
|
||||
];
|
||||
};
|
||||
|
||||
module.exports = PhoneticKeyGenerator;
|
14
lib/key_generators/random.js
Normal file
14
lib/key_generators/random.js
Normal file
|
@ -0,0 +1,14 @@
|
|||
var RandomKeyGenerator = function(options) {
|
||||
this.keyspace = options.keyspace || 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
||||
};
|
||||
|
||||
// Generate a random key
|
||||
RandomKeyGenerator.prototype.createKey = function(keyLength) {
|
||||
var text = '';
|
||||
for (var i = 0; i < keyLength; i++) {
|
||||
text += this.keyspace.charAt(Math.floor(Math.random() * this.keyspace.length));
|
||||
}
|
||||
return text;
|
||||
};
|
||||
|
||||
module.exports = RandomKeyGenerator;
|
Loading…
Add table
Add a link
Reference in a new issue