welsonjs/lib/base64.js
2020-07-23 15:16:01 +09:00

68 lines
2.0 KiB
JavaScript

////////////////////////////////////////////////////////////////////////
// Base64 API
////////////////////////////////////////////////////////////////////////
exports.VERSIONINFO = "Base64 Module (base64.js) version 0.1";
exports.global = global;
exports.require = require;
exports.createMSXMLObject = function() {
var progIDs = [
"Msxml2.DOMDocument.6.0",
"Msxml2.DOMDocument.5.0",
"Msxml2.DOMDocument.4.0",
"Msxml2.DOMDocument.3.0",
"MSXML2.DOMDocument",
"MSXML.DOMDocument"
];
for (var i = 0; i < progIDs.length; i++) {
try {
return new ActiveXObject(progIDs[i]);
} catch(e) {};
}
return null;
};
exports.getStream_StringToBinary = function(dText) {
var adTypeText = 2;
var adTypeBinary = 1;
var BinaryStream = new ActiveXObject("ADODB.Stream");
BinaryStream.Type = adTypeText;
BinaryStream.CharSet = "utf-8";
BinaryStream.Open();
BinaryStream.WriteText(dText);
BinaryStream.Position = 0;
BinaryStream.Type = adTypeBinary;
BinaryStream.Position = 0;
return BinaryStream.Read();
};
exports.getStream_BinaryToString = function(dBinary) {
var adTypeText = 2;
var adTypeBinary = 1;
var BinaryStream = new ActiveXObject("ADODB.Stream");
BinaryStream.Type = adTypeBinary;
BinaryStream.Open();
BinaryStream.Write(dBinary);
BinaryStream.Position = 0;
BinaryStream.Type = adTypeText;
BinaryStream.CharSet = "utf-8";
return BinaryStream.ReadText();
};
exports.encode = function(sText) {
var oXML = exports.createMSXMLObject();
var oNode = oXML.createElement("base64");
oNode.dataType = "bin.base64";
oNode.nodeTypedValue = exports.getStream_StringToBinary(sText);
return oNode.text;
};
exports.decode = function(vCode) {
var oXML = exports.createMSXMLObject();
var oNode = oXML.createElement("base64");
oNode.dataType = "bin.base64";
oNode.text = vCode;
return exports.getStream_BinaryToString(oNode.nodeTypedValue);
};