support https and 301 redirects in imports. fixes #1103

This commit is contained in:
Luke Page
2013-01-05 16:08:32 +00:00
parent 8e41393be0
commit 70d610f877
2 changed files with 16 additions and 21 deletions

View File

@@ -1,7 +1,7 @@
var path = require('path'),
sys = require('util'),
url = require('url'),
http = require('http'),
request = require('request'),
fs = require('fs');
var less = {
@@ -146,26 +146,21 @@ less.Parser.importer = function (file, paths, callback, env) {
path: urlObj.pathname + (urlObj.search||'')
};
http.get(req, function (res) {
var body = '';
res.on('data', function (chunk) {
body += chunk.toString();
});
res.on('end', function () {
if (res.statusCode === 404) {
callback({ type: 'File', message: "resource '" + urlStr + "' was not found\n" });
}
if (!body) {
sys.error( 'Warning: Empty body (HTTP '+ res.statusCode + ') returned by "' + urlStr +'"' );
}
pathname = urlStr;
dirname = urlObj.protocol +'//'+ urlObj.host + urlObj.pathname.replace(/[^\/]*$/, '');
parseFile(null, body);
});
}).on('error', function (err) {
callback({ type: 'File', message: "resource '" + urlStr + "' gave this Error:\n "+ err +"\n" });
request.get(urlStr, function (error, res, body) {
if (res.statusCode === 404) {
callback({ type: 'File', message: "resource '" + urlStr + "' was not found\n" });
return;
}
if (!body) {
sys.error( 'Warning: Empty body (HTTP '+ res.statusCode + ') returned by "' + urlStr +'"' );
}
if (error) {
callback({ type: 'File', message: "resource '" + urlStr + "' gave this Error:\n "+ error +"\n" });
}
pathname = urlStr;
dirname = urlObj.protocol +'//'+ urlObj.host + urlObj.pathname.replace(/[^\/]*$/, '');
parseFile(null, body);
});
} else {
// TODO: Undo this at some point,

View File

@@ -10,7 +10,7 @@
"main" : "./lib/less/index",
"directories" : { "test": "./test" },
"engines" : { "node": ">=0.4.2" },
"optionalDependencies" : { "ycssmin": ">=1.0.1", "mime": "1.2.x" },
"optionalDependencies" : { "ycssmin": ">=1.0.1", "mime": "1.2.x", "request":">=2.12.0" },
"devDependencies" : { "diff": "~1.0" },
"scripts": {
"test": "make test"