Socket
Socket
Sign inDemoInstall

xmlhttprequest

Package Overview
Dependencies
0
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.6.0 to 1.7.0

.jshintrc

92

lib/XMLHttpRequest.js

@@ -14,7 +14,9 @@ /**

var Url = require("url")
, spawn = require("child_process").spawn
, fs = require('fs');
var Url = require("url");
var spawn = require("child_process").spawn;
var fs = require("fs");
exports.XMLHttpRequest = function() {
"use strict";
/**

@@ -24,4 +26,4 @@ * Private variables

var self = this;
var http = require('http');
var https = require('https');
var http = require("http");
var https = require("https");

@@ -188,7 +190,7 @@ // Holds http.js objects

this.setRequestHeader = function(header, value) {
if (this.readyState != this.OPENED) {
if (this.readyState !== this.OPENED) {
throw "INVALID_STATE_ERR: setRequestHeader can only be called when state is OPEN";
}
if (!isAllowedHttpHeader(header)) {
console.warn('Refused to set unsafe header "' + header + '"');
console.warn("Refused to set unsafe header \"" + header + "\"");
return;

@@ -211,2 +213,4 @@ }

&& this.readyState > this.OPENED
&& response
&& response.headers
&& response.headers[header.toLowerCase()]

@@ -262,3 +266,3 @@ && !errorFlag

this.send = function(data) {
if (this.readyState != this.OPENED) {
if (this.readyState !== this.OPENED) {
throw "INVALID_STATE_ERR: connection must be opened before send() is called";

@@ -276,10 +280,10 @@ }

switch (url.protocol) {
case 'https:':
case "https:":
ssl = true;
// SSL & non-SSL both need host, no break here.
case 'http:':
case "http:":
host = url.hostname;
break;
case 'file:':
case "file:":
local = true;

@@ -289,3 +293,3 @@ break;

case undefined:
case '':
case "":
host = "localhost";

@@ -305,3 +309,3 @@ break;

if (settings.async) {
fs.readFile(url.pathname, 'utf8', function(error, data) {
fs.readFile(url.pathname, "utf8", function(error, data) {
if (error) {

@@ -317,3 +321,3 @@ self.handleError(error);

try {
this.responseText = fs.readFileSync(url.pathname, 'utf8');
this.responseText = fs.readFileSync(url.pathname, "utf8");
this.status = 200;

@@ -333,8 +337,8 @@ setState(self.DONE);

// Add query string if one is used
var uri = url.pathname + (url.search ? url.search : '');
var uri = url.pathname + (url.search ? url.search : "");
// Set the Host header or the server may reject the request
headers["Host"] = host;
headers.Host = host;
if (!((ssl && port === 443) || port === 80)) {
headers["Host"] += ':' + url.port;
headers.Host += ":" + url.port;
}

@@ -344,7 +348,7 @@

if (settings.user) {
if (typeof settings.password == "undefined") {
if (typeof settings.password === "undefined") {
settings.password = "";
}
var authBuf = new Buffer(settings.user + ":" + settings.password);
headers["Authorization"] = "Basic " + authBuf.toString("base64");
headers.Authorization = "Basic " + authBuf.toString("base64");
}

@@ -391,3 +395,3 @@

// Handler for the response
function responseHandler(resp) {
var responseHandler = function responseHandler(resp) {
// Set response var to the response we got back

@@ -398,3 +402,3 @@ // This is so it remains accessable outside this scope

// @TODO Prevent looped redirects
if (response.statusCode === 302 || response.statusCode === 303 || response.statusCode === 307) {
if (response.statusCode === 301 || response.statusCode === 302 || response.statusCode === 303 || response.statusCode === 307) {
// Change URL to the redirect location

@@ -410,3 +414,3 @@ settings.url = response.headers.location;

path: url.path,
method: response.statusCode === 303 ? 'GET' : settings.method,
method: response.statusCode === 303 ? "GET" : settings.method,
headers: headers

@@ -416,3 +420,3 @@ };

// Issue the new request
request = doRequest(newOptions, responseHandler).on('error', errorHandler);
request = doRequest(newOptions, responseHandler).on("error", errorHandler);
request.end();

@@ -428,3 +432,3 @@ // @TODO Check if an XHR event needs to be fired here

response.on('data', function(chunk) {
response.on("data", function(chunk) {
// Make sure there's some data

@@ -440,5 +444,5 @@ if (chunk) {

response.on('end', function() {
response.on("end", function() {
if (sendFlag) {
// Discard the 'end' event if the connection has been aborted
// Discard the end event if the connection has been aborted
setState(self.DONE);

@@ -449,14 +453,14 @@ sendFlag = false;

response.on('error', function(error) {
response.on("error", function(error) {
self.handleError(error);
});
}
};
// Error handler for the request
function errorHandler(error) {
var errorHandler = function errorHandler(error) {
self.handleError(error);
}
};
// Create the request
request = doRequest(options, responseHandler).on('error', errorHandler);
request = doRequest(options, responseHandler).on("error", errorHandler);

@@ -487,22 +491,21 @@ // Node 0.4 and later won't accept empty data. Make sure it's needed.

+ "response.on('end', function() {"
+ "fs.writeFileSync('" + contentFile + "', 'NODE-XMLHTTPREQUEST-STATUS:' + response.statusCode + ',' + responseText, 'utf8');"
+ "fs.writeFileSync('" + contentFile + "', JSON.stringify({err: null, data: {statusCode: response.statusCode, headers: response.headers, text: responseText}}), 'utf8');"
+ "fs.unlinkSync('" + syncFile + "');"
+ "});"
+ "response.on('error', function(error) {"
+ "fs.writeFileSync('" + contentFile + "', 'NODE-XMLHTTPREQUEST-ERROR:' + JSON.stringify(error), 'utf8');"
+ "fs.writeFileSync('" + contentFile + "', JSON.stringify({err: error}), 'utf8');"
+ "fs.unlinkSync('" + syncFile + "');"
+ "});"
+ "}).on('error', function(error) {"
+ "fs.writeFileSync('" + contentFile + "', 'NODE-XMLHTTPREQUEST-ERROR:' + JSON.stringify(error), 'utf8');"
+ "fs.writeFileSync('" + contentFile + "', JSON.stringify({err: error}), 'utf8');"
+ "fs.unlinkSync('" + syncFile + "');"
+ "});"
+ (data ? "req.write('" + data.replace(/'/g, "\\'") + "');":"")
+ (data ? "req.write('" + JSON.stringify(data).slice(1,-1).replace(/'/g, "\\'") + "');":"")
+ "req.end();";
// Start the other Node Process, executing this string
var syncProc = spawn(process.argv[0], ["-e", execString]);
var statusText;
while(fs.existsSync(syncFile)) {
// Wait while the sync file is empty
}
self.responseText = fs.readFileSync(contentFile, 'utf8');
var resp = JSON.parse(fs.readFileSync(contentFile, 'utf8'));
// Kill the child process once the file has data

@@ -512,10 +515,9 @@ syncProc.stdin.end();

fs.unlinkSync(contentFile);
if (self.responseText.match(/^NODE-XMLHTTPREQUEST-ERROR:/)) {
// If the file returned an error, handle it
var errorObj = self.responseText.replace(/^NODE-XMLHTTPREQUEST-ERROR:/, "");
self.handleError(errorObj);
if (resp.err) {
self.handleError(resp.err);
} else {
// If the file returned okay, parse its data and move to the DONE state
self.status = self.responseText.replace(/^NODE-XMLHTTPREQUEST-STATUS:([0-9]*),.*/, "$1");
self.responseText = self.responseText.replace(/^NODE-XMLHTTPREQUEST-STATUS:[0-9]*,(.*)/, "$1");
response = resp.data;
self.status = resp.data.statusCode;
self.responseText = resp.data.text;
setState(self.DONE);

@@ -605,3 +607,3 @@ }

var setState = function(state) {
if (self.readyState !== state) {
if (state == self.LOADING || self.readyState !== state) {
self.readyState = state;

@@ -608,0 +610,0 @@

{
"name": "xmlhttprequest"
, "description": "XMLHttpRequest for Node"
, "version": "1.6.0"
, "author": {
"name": "Dan DeFelippi"
, "url": "http://driverdan.com"
}
, "keywords": ["xhr", "ajax"]
, "licenses": [{
"type": "MIT"
, "url": "http://creativecommons.org/licenses/MIT/"
}]
, "repository": {
"type": "git"
, "url": "git://github.com/driverdan/node-XMLHttpRequest.git"
}
, "bugs": "http://github.com/driverdan/node-XMLHttpRequest/issues"
, "engines": {
"name": "xmlhttprequest",
"description": "XMLHttpRequest for Node",
"version": "1.7.0",
"author": {
"name": "Dan DeFelippi",
"url": "http://driverdan.com"
},
"keywords": ["xhr", "ajax"],
"licenses": [{
"type": "MIT",
"url": "http://creativecommons.org/licenses/MIT/"
}],
"repository": {
"type": "git",
"url": "git://github.com/driverdan/node-XMLHttpRequest.git"
},
"bugs": "http://github.com/driverdan/node-XMLHttpRequest/issues",
"engines": {
"node": ">=0.4.0"
}
, "directories": {
"lib": "./lib"
, "example": "./example"
}
, "main": "./lib/XMLHttpRequest.js"
},
"directories": {
"lib": "./lib",
"example": "./example"
},
"main": "./lib/XMLHttpRequest.js"
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc