kulmapaikka-ircbot/plugins/getUrl.js

49 lines
1.1 KiB
JavaScript

var Promise = require('promise');
var request = require('request');
var requestPromise = function (url, urlArgs) {
var promise = new Promise(function(resolve, reject) {
request({
url: url,
qs: urlArgs,
json: false
}, function(error, response, body) {
if(!error && response.statusCode == 200) {
resolve(body);
} else {
reject(error);
}
});
});
return promise;
};
module.exports = function(config) {
// http://stackoverflow.com/questions/13087888/getting-the-page-title-from-a-scraped-webpage
var getTitle = function(url) {
var urlOpts = {host: url, path: '/', port: '80'};
var re = /(<\s*title[^>]*>((.|\n)+?)<\s*\/\s*title)>/gi;
var urlArgs = {};
var promise = new Promise(function(resolve, reject) {
var urlPromise = requestPromise(url, urlArgs);
urlPromise.then(function(data) {
var match = re.exec(data);
if (match && match[2]) {
var title = match[2].trim(); // remove whitespace
title = title.replace(/\r?\n|\r/g, ''); // remove newlines
resolve(title);
} else {
reject();
}
});
});
return promise;
};
return getTitle;
};