Skip to content

Instantly share code, notes, and snippets.

@jessedearing
Created September 29, 2011 19:09
Show Gist options
  • Save jessedearing/1251632 to your computer and use it in GitHub Desktop.
Save jessedearing/1251632 to your computer and use it in GitHub Desktop.
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