blob: e29a33e1ecbb27d00a1c918da6d85bdb5456205d [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
var http = require('http');
var https = require('https');
var parseUrl = require('url').parse;
var Promise = require('./promise');
var vlog = require('./vlog');
module.exports = {
/**
* Request a url via http and return a promise to the response. (Node version)
* @param {string} url the url to request
* @return {promise} a promise to an object with fields 'headers',
* 'statusCode', and 'body'.
*/
Request: function(url) {
var client;
var protocol = parseUrl(url).protocol;
if (protocol === 'http:') {
client = http;
vlog.logger.warn('Sending insecure request to: ' + url);
} else if (protocol === 'https:') {
client = https;
} else {
throw new Error('Unsupported protocol: ' + url);
}
return new Promise(function(resolve, reject) {
var req = client.get(url, function(response) {
var result = {
statusCode: response.statusCode,
headers: response.headers,
};
response.setEncoding('UTF-8');
result.body = '';
response.on('data', function(chunk) {
result.body += chunk;
});
response.on('end', function() {
resolve(result);
});
});
req.on('error', function(e) {
reject(e);
});
req.setTimeout(5000, function() {
reject('Timeout while accessing ' + url);
});
});
}
};