request.js 889 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. var http = require('http');
  2. var https = require('https');
  3. var parse = require('url').parse;
  4. var httpLibs = { 'http:': http, 'https:': https };
  5. module.exports = function(url, callback) {
  6. var parsed = parse(url);
  7. var httpLib = httpLibs[parsed.protocol];
  8. if (!httpLib) {
  9. var err = new Error('Invalid URL: ' + url);
  10. if (callback) {
  11. callback(err);
  12. } else {
  13. throw err;
  14. }
  15. return;
  16. }
  17. var req = httpLib.get(parsed);
  18. if (callback) {
  19. req.on('response', function(res) {
  20. if (res.statusCode !== 200) {
  21. callback(new Error('status code ' + res.statusCode));
  22. return;
  23. }
  24. var body = '';
  25. res.setEncoding('utf8');
  26. res.on('data', function(chunk) {
  27. body += chunk;
  28. });
  29. res.on('end', function() {
  30. callback(null, body);
  31. });
  32. });
  33. req.on('error', callback);
  34. }
  35. return req;
  36. };