Created
September 29, 2011 19:09
-
-
Save jessedearing/1251632 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var querystring = require('querystring'); | |
var http = require('http'); | |
var util = require('util'); | |
exports.process = function(message, sayCallback) { | |
if(message.indexOf('generate meme') !== -1) { | |
var params = message.split(' '); | |
if(exports.types[params[2]]) { | |
var linesRegex = new RegExp(params[2] + " (.*) / (.*)"); | |
var lines = linesRegex.exec(message); | |
generateMeme(exports.types[params[2]], lines[1], lines[2], function(memeMessage) { | |
sayCallback(memeMessage); | |
}); | |
} | |
else { | |
var noMemeMessage; | |
var memeList = []; | |
for(var key in exports.types) { | |
memeList.push(key); | |
} | |
if(params[2] !== 'list') { | |
noMemeMessage = "Sorry, I don't have that meme. "; | |
} | |
else { | |
noMemeMessage = ""; | |
} | |
noMemeMessage += "I have the following memes: "; | |
for(var meme in memeList) { | |
noMemeMessage += memeList[meme] + ' '; | |
} | |
sayCallback(noMemeMessage); | |
} | |
} | |
}; | |
exports.types = { | |
successkid: { | |
generatorId: 121, | |
imageId: 1031 | |
}, | |
yuno: { | |
generatorId: 2, | |
imageId: 166088 | |
}, | |
dosequis: { | |
generatorId: 74, | |
imageId: 2485 | |
}, | |
couragewolf: { | |
generatorId: 303, | |
imageId: 24 | |
}, | |
philosoraptor: { | |
generatorId: 17, | |
imageId: 984 | |
}, | |
philosoraptor_with_pipe: { | |
generatorId: 17, | |
imageId: 1193030 | |
}, | |
businesscat: { | |
generatorId: 308, | |
imageId: 332591 | |
}, | |
bill: { | |
generatorId: 9623, | |
imageId: 439720 | |
}, | |
yoda: { | |
generatorId: 629, | |
imageId: 963 | |
}, | |
xzibit: { | |
generatorId: 79, | |
imageId: 108785 | |
}, | |
trollface: { | |
generatorId: 68, | |
imageId: 269 | |
}, | |
fry: { | |
generatorId: 305, | |
imageId: 84688 | |
}, | |
inception: { | |
generatorId: 1623, | |
imageId: 575333 | |
}, | |
csi : { | |
generatorId: 1370, | |
imageId: 172109 | |
} | |
}; | |
generateMeme = function(memeType, line1, line2, callback) { | |
var result; | |
var options = { | |
host: 'memegenerator.net', | |
port: 80, | |
path: '/create/instance', | |
method: 'POST', | |
headers: { | |
'Content-Type': 'application/x-www-form-urlencoded' | |
} | |
}; | |
var request = http.request(options); | |
request.on('response', function(res) { | |
res.on('data', function(chunk) { | |
util.log('[info] ' + chunk); | |
}); | |
res.on('error', function(e) { | |
util.log('[error] ' + e); | |
callback("Sorry, I wasn't able to do that."); | |
}); | |
util.log('[debug] response code: ' + res.statusCode); | |
util.log('[debug] response: ' + util.inspect(res.headers)); | |
var instanceId = res.headers.location; | |
util.log('[info] meme instanceid: ' + instanceId); | |
if(instanceId) { | |
instanceId = (/\/instance\/(.*)$/).exec(instanceId)[1]; | |
callback("http://images.memegenerator.net/instances/400x/" + instanceId + ".jpg"); | |
} | |
else { | |
callback("An error occurred"); | |
} | |
}); | |
request.on('error', function(e) { | |
util.log('[error] ' + e); | |
callback("Sorry, I wasn't able to do that."); | |
}); | |
request.write( | |
querystring.stringify({ | |
generatorID: memeType.generatorId, | |
imageID: memeType.imageId, | |
text0: line1, | |
text1: line2, | |
languageCode: 'en', | |
watermarkCode: '' | |
}) | |
); | |
request.end(); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment