|
1 |
| -var HTTP = require("http"); |
| 1 | +var google = require('google'); |
2 | 2 |
|
| 3 | +// calls callback with {title: string, url: string} |
3 | 4 | var FeelingLucky = module.exports = function(query, callback) {
|
4 |
| - var self = this; |
5 |
| - |
6 |
| - var google = HTTP.createClient(80, 'ajax.googleapis.com'); |
7 |
| - var search_url = "/ajax/services/search/web?v=1.0&q=" + encodeURIComponent(query); |
8 |
| - var request = google.request('GET', search_url, { |
9 |
| - 'host': 'ajax.googleapis.com', |
10 |
| - 'Referer': 'http://www.v8bot.com', |
11 |
| - 'User-Agent': 'NodeJS HTTP client', |
12 |
| - 'Accept': '*/*'}); |
13 |
| - request.addListener('response', function(response) { |
14 |
| - response.setEncoding('utf8'); |
15 |
| - var body = ""; |
16 |
| - response.addListener('data', function(chunk) { body += chunk; }); |
17 |
| - response.addListener('end', function() { |
18 |
| - var searchResults = JSON.parse(body); |
19 |
| - var results = searchResults.responseData.results; |
| 5 | + google(query, function(error, results) { |
| 6 | + if (error) { |
| 7 | + console.error('FeelingLucky ', error); |
| 8 | + return callback(null); |
| 9 | + } |
20 | 10 |
|
21 |
| - if (results && results[0]) { |
22 |
| - results[0].url = decodeURIComponent(results[0].url); |
23 |
| - callback.call(self, |
24 |
| - { |
25 |
| - title: results[0].titleNoFormatting.replace(/&#(\d+);/g, |
26 |
| - function(a, b){return String.fromCharCode(b);}), |
27 |
| - url: results[0].url |
28 |
| - }); |
29 |
| - } else { |
30 |
| - callback.call(self, null); |
31 |
| - } |
32 |
| - }); |
| 11 | + var result = results.links[0]; |
| 12 | + if (!result) { |
| 13 | + return callback(null); |
| 14 | + } |
| 15 | + |
| 16 | + callback({title: result.title, url: result.link}) |
33 | 17 | });
|
34 |
| - request.end(); |
35 | 18 | };
|
0 commit comments