| Index: bootstrap/win/get_file.js
 | 
| ===================================================================
 | 
| --- bootstrap/win/get_file.js	(revision 0)
 | 
| +++ bootstrap/win/get_file.js	(revision 0)
 | 
| @@ -0,0 +1,114 @@
 | 
| +// Copyright (c) 2009 The Chromium Authors. All rights reserved.
 | 
| +// Use of this source code is governed by a BSD-style license that can be
 | 
| +// found in the LICENSE file.
 | 
| +
 | 
| +function download(sURL, sPath, verbose) {
 | 
| +  if (verbose) {
 | 
| +    WScript.StdOut.Write(" *  GET " + sURL + "...");
 | 
| +  }
 | 
| +	var oResponseBody = null;
 | 
| +	try {
 | 
| +		oXMLHTTP = new ActiveXObject("MSXML2.ServerXMLHTTP");
 | 
| +	} catch (e) {
 | 
| +		WScript.StdOut.WriteLine("[-] XMLHTTP " + new Number(e.number).toHex() + 
 | 
| +			": Cannot create Active-X object (" + e.description) + ").";
 | 
| +		WScript.Quit(1);
 | 
| +	}
 | 
| +	try {
 | 
| +		oXMLHTTP.open("GET", sURL, false);
 | 
| +	} catch (e) {
 | 
| +		WScript.StdOut.WriteLine("[-] XMLHTTP " + new Number(e.number).toHex() + 
 | 
| +			": invalid URL.");
 | 
| +		WScript.Quit(1);
 | 
| +	}
 | 
| +	var sSize = "?";
 | 
| +	var iSize
 | 
| +	try {
 | 
| +		oXMLHTTP.send(null);
 | 
| +		if (oXMLHTTP.status != 200) {
 | 
| +			WScript.StdOut.WriteLine("[-] HTTP " + oXMLHTTP.status + " " + 
 | 
| +				oXMLHTTP.statusText);
 | 
| +			WScript.Quit(1);
 | 
| +		}
 | 
| +		oResponseBody = oXMLHTTP.responseBody;
 | 
| +		sSize = oXMLHTTP.getResponseHeader("Content-Length");
 | 
| +		if (sSize != "") {
 | 
| +			iSize = parseInt(sSize)
 | 
| +			sSize = iSize.toBytes();
 | 
| +		} else {
 | 
| +			try {
 | 
| +				iSize = new Number(oXMLHTTP.responseText.length)
 | 
| +				sSize = iSize.toBytes();
 | 
| +			} catch(e) {
 | 
| +				sSize = "unknown size";
 | 
| +			}
 | 
| +		}
 | 
| +	} catch (e) {
 | 
| +		WScript.StdOut.WriteLine("[-] XMLHTTP " + new Number(e.number).toHex() + 
 | 
| +			": Cannot make HTTP request (" + e.description) + ")";
 | 
| +		WScript.Quit(1);
 | 
| +	}
 | 
| +
 | 
| +  if (verbose) {
 | 
| +    WScript.StdOut.WriteLine("ok (" + sSize + ").");
 | 
| +    WScript.StdOut.Write(" *  Save " + sPath + "...");
 | 
| +  }
 | 
| +
 | 
| +	try {
 | 
| +		var oAS = new ActiveXObject("ADODB.Stream");
 | 
| +		oAS.Mode = 3; // ReadWrite
 | 
| +		oAS.Type = 1; // 1= Binary
 | 
| +		oAS.Open(); // Open the stream
 | 
| +		oAS.Write(oResponseBody); // Write the data
 | 
| +		oAS.SaveToFile(sPath, 2); // Save to our destination
 | 
| +		oAS.Close();
 | 
| +	} catch(e) {
 | 
| +		WScript.StdOut.WriteLine("[-] ADODB.Stream " + new Number(e.number).toHex() + 
 | 
| +			": Cannot save file (" + e.description + ")");
 | 
| +		WScript.Quit(1);
 | 
| +	}
 | 
| +	if (typeof(iSize) != undefined) {
 | 
| +		oFSO = WScript.CreateObject("Scripting.FileSystemObject")
 | 
| +		oFile = oFSO.GetFile(sPath)
 | 
| +		if (oFile.Size < iSize) {
 | 
| +			WScript.StdOut.WriteLine("[-] File only partially downloaded.");
 | 
| +			WScript.Quit(1);
 | 
| +		}
 | 
| +	}
 | 
| +  if (verbose) {
 | 
| +    WScript.StdOut.WriteLine("ok.");
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +Number.prototype.isInt = function Number_isInt() {
 | 
| +	return this % 1 == 0; 
 | 
| +};
 | 
| +Number.prototype.toBytes = function Number_toBytes() {
 | 
| +	// Returns a "pretty" string representation of a number of bytes:
 | 
| +	var aUnits = ["KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
 | 
| +	var sUnit = "bytes";
 | 
| +	var iLimit = 1; 
 | 
| +	while(this > iLimit * 1100 && aUnits.length > 0) {
 | 
| +		iLimit *= 1024;
 | 
| +		sUnit = aUnits.shift();
 | 
| +	}
 | 
| +	return (Math.round(this * 100 / iLimit) / 100).toString() + " " + sUnit;
 | 
| +};
 | 
| +Number.prototype.toHex = function Number_toHex(nLength) {
 | 
| +	if (arguments.length == 0) nLength = 1;
 | 
| +	if (typeof(nLength) != "number" && !(nLength instanceof Number)) {
 | 
| +		throw Exception("Length must be a positive integer larger than 0.", TypeError, 0);
 | 
| +	}
 | 
| +	if (nLength < 1 || !nLength.isInt()) {
 | 
| +		throw Exception("Length must be a positive integer larger than 0.", "RangeError", 0);
 | 
| +	}
 | 
| +	var sResult = (this + (this < 0 ? 0x100000000 : 0)).toString(16);
 | 
| +	while (sResult.length < nLength) sResult = "0" + sResult;
 | 
| +	return sResult;
 | 
| +};
 | 
| +
 | 
| +if (WScript.Arguments.length != 2) {
 | 
| +  WScript.StdOut.Write("Incorrect arguments to download.js")
 | 
| +} else {
 | 
| +  download(WScript.Arguments(0), WScript.Arguments(1), false);
 | 
| +}
 | 
| 
 | 
| Property changes on: bootstrap\win\get_file.js
 | 
| ___________________________________________________________________
 | 
| Added: svn:eol-style
 | 
|    + LF
 | 
| 
 | 
| 
 |