Files
Mareon/ax/SRC/Common.js
2015-01-21 12:41:03 +00:00

411 lines
13 KiB
JavaScript

// --------------------------------------------------------------------------------------
// Common.js
// Copyright 2014 SG|facilitor. 053-4800 700, helpdesk@sgfacilitor.nl
// Written by MB (2014)
//
// MAREON Connector/Adapter Ax -> FACILITOR en Facilitor -> Ax
// --------------------------------------------------------------------------------------
//var proxy = "127.0.0.1:8888"; // Voor debugging met Fiddler
// Helper functies
// 2013-11-13T07:00:00
function AX_or_Tobias(){
if (G_ax_url != "") return "A";
else {if (G_tobias_url != "") return "T";
else return "";
}
}
// v_type = 0 (JSon Plain text is returned)
// v_type = 1 (XMLresponse is returned)
function apiFCLT(v_API, v_APIKEY, v_req, v_type, v_soap_envelope)
{
__Log("apiFCLT v_API: " + v_API,1);
__Log("apiFCLT v_APIKEY: " + v_APIKEY,1);
__Log("apiFCLT v_type: " + v_type,1);
__Log("apiFCLT v_soap_envelope: " + v_soap_envelope,1);
// var xmlhttp = new ActiveXObject("WinHTTP.WinHTTPRequest.5.1");
var xmlhttp = new ActiveXObject("MSXML2.ServerXMLHTTP.6.0");
SXH_PROXY_SET_PROXY = 2;
if (typeof proxy != "undefined" && proxy)
xmlhttp.setProxy(SXH_PROXY_SET_PROXY, proxy);
var xmlUrl = G_fclt_url + "?API=" + v_API + "&APIKEY=" + v_APIKEY;
xmlhttp.open("POST", xmlUrl, false);
xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8")
var msg = "" + v_req;
if (v_soap_envelope == 1){
msg = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+ "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'"
+ " xmlns:xsd='http://www.w3.org/2001/XMLSchema'"
+ " xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>"
+ " <soap:Body>"
+ v_req
+ " </soap:Body>"
+ "</soap:Envelope>";
}
if (msg != "")
{
xmlhttp.send(msg);
var txt = "";
if (xmlhttp.status == 200)
{
try
{
if (v_type == 1){
var result_data = xmlhttp.responseXML;
__Log("XML :" + result_data.xml, 2);
if (G_log_level == 3){
var l_xml = xmlhttp.responseBody;
WriteXML2File("Log/", v_API, "xml" , l_xml);
}
return result_data;
}
else
{
var txt = xmlhttp.responseText || "{}";
var result_data = eval("(" + txt + ")");
__Log("XML :" + result_data,2);
return result_data;
}
}
catch (e)
{
// Waarschijnlijk http-error terug gekregen
__Log("apiFCLT failed: " + e.description,1);
__Log(txt,1);
return "";
}
}
else
{
__Log("apiFCLT - HTTP <> 200",1);
__Log("Status: "+xmlhttp.status,1);
__Log(xmlhttp.responseText,1);
return "";
}
}
}
function apiAX (v_API, v_req, v_type)
{
var l_result;
if (AX_or_Tobias() == "A")
{
l_result = api2AX(G_ax_url, v_API, v_req, v_type);
}
if (AX_or_Tobias() == "T")
{
l_result = api2Tobias(G_tobias_url, v_API, v_req, v_type);
}
//if (G_ax_url != "")
//{
// l_result = api2AX(G_ax_url, v_API, v_req, v_type);
//}
//if (G_tobias_url != "")
//{
// l_result = api2Tobias(G_tobias_url, v_API, v_req, v_type);
//}
return l_result;
}
function api2AX (v_Url, v_API, v_req, v_type)
{
__Log("apiAX v_API: " + v_API,1);
__Log("apiAX v_type: " + v_type,1);
__Log("apiAX v_req: " + v_req,1);
var xmlhttp = new ActiveXObject("WinHTTP.WinHTTPRequest.5.1");
SXH_PROXY_SET_PROXY = 2;
if (typeof proxy != "undefined" && proxy)
xmlhttp.setProxy(SXH_PROXY_SET_PROXY, proxy);
xmlhttp.open("POST", v_Url, false);
xmlhttp.setRequestHeader("Content-Type", "application/soap+xml; charset=utf-8")
var v_msg = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+ "<s:Envelope xmlns:s=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:a=\"http://www.w3.org/2005/08/addressing\">"
+ "<s:Header>"
+ "<a:Action s:mustUnderstand=\"1\">http://tempuri.org/ISupplierService/" + v_API + "</a:Action>"
+ "<a:To s:mustUnderstand=\"1\">"+ v_Url + "</a:To>"
+ "</s:Header>"
+ "<s:Body>"
+ v_req
+ "</s:Body>"
+ "</s:Envelope>";
xmlhttp.send(v_msg);
if (xmlhttp.status == 200)
{ var txt = "";
try
{
switch (v_type)
{
case 0:
var txt = xmlhttp.responseText;
break;
case 1:
var txt = xmlhttp.responseBody;
break;
}
//var txt = xmlhttp.responseText || "{}";
//var txt = xmlhttp.responseBody;
////var result_data = eval("(" + txt + ")");
////return result_data;
__Log("XML :" + txt,2);
return txt;
}
catch (e)
{
// Waarschijnlijk http-error terug gekregen
__Log("apiAX failed: " + e.description,1);
__Log(txt,1);
return {};
}
}
else
{
__Log("apiAX - HTTP <> 200",1);
__Log("URL: " + v_Url,1);
__Log("Request: " + v_req,1);
__Log("Status: "+xmlhttp.status,1);
__Log(xmlhttp.responseText,1);
return ""
}
}
function api2Tobias (v_Url, v_API, v_req, v_type)
{
__Log("apiTobias v_API: " + v_API,1);
__Log("apiTobias v_type: " + v_type,1);
__Log("apiTobias v_req: " + v_req,1);
var xmlhttp = new ActiveXObject("WinHTTP.WinHTTPRequest.5.1");
SXH_PROXY_SET_PROXY = 2;
if (typeof proxy != "undefined" && proxy)
xmlhttp.setProxy(SXH_PROXY_SET_PROXY, proxy);
xmlhttp.open("POST", v_Url, false);
xmlhttp.setRequestHeader("Content-Type", "text/xml;charset=UTF-8");
var l_tobias_appserver = Read_Ini_Setting("tobias","appserver");
var l_methodlocation = Read_Ini_Setting("tobias","methodlocation");
var v_msg = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+ "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tob=\"http://sg.nl/TobiasConnect/\">"
+ "<soapenv:Header/>"
+ "<soapenv:Body>"
+ "<tob:RunMethod>"
+ " <!--Optional:-->"
+ " <tob:Methode>" + v_API + "</tob:Methode>"
+ " <!--Optional:-->"
+ " <tob:Parameters>"
+ " <!--Optional:-->"
+ " <tob:AppServer>" + l_tobias_appserver + "</tob:AppServer>"
+ " <!--Optional:-->"
+ " <tob:MethodLocation>" + l_methodlocation + "</tob:MethodLocation>"
+ " <!--Optional:-->"
+ " <tob:ParameterList>"
+ v_req
+ " </tob:ParameterList>"
+ " </tob:Parameters>"
+ "</tob:RunMethod>"
+ "</soapenv:Body>"
+ " </soapenv:Envelope>"
xmlhttp.send(v_msg);
if (xmlhttp.status == 200)
{ var txt = "";
try
{
switch (v_type)
{
case 0:
var txt = xmlhttp.responseText;
break;
case 1:
var txt = xmlhttp.responseBody;
break;
}
//var txt = xmlhttp.responseText || "{}";
//var txt = xmlhttp.responseBody;
////var result_data = eval("(" + txt + ")");
////return result_data;
__Log("XML :" + txt,2);
return txt;
}
catch (e)
{
// Waarschijnlijk http-error terug gekregen
__Log("apiAX failed: " + e.description,1);
__Log(txt,1);
return {};
}
}
else
{
__Log("apiAX - HTTP <> 200",1);
__Log("URL: " + v_Url,1);
__Log("Request: " + v_req,1);
__Log("Status: "+xmlhttp.status,1);
__Log(xmlhttp.responseText,1);
return ""
}
}
function WriteXML2File(p_path, p_filenaam, p_extension, p_xml) {
v_timestamp = displayTimeStamp();
var xml_filename = p_path + p_filenaam + v_timestamp + "." + p_extension;
oStream = new ActiveXObject("ADODB.Stream");
oStream.Open();
oStream.Type = 1; // adTypeBinary
oStream.Write(p_xml); // responseText geeft encoding problemen!
oStream.SaveToFile (xml_filename, 2); // adSaveCreateOverWrite
oStream.Close();
}
function WriteText2File(p_path, p_filenaam, p_extension, p_txt) {
__Log("WriteText2File - p_path: " + p_path,1);
__Log("WriteText2File - p_filenaam: " + p_filenaam,1);
__Log("WriteText2File - p_extension: " + p_extension,1);
__Log("WriteText2File - p_txt: " + p_txt,1);
v_timestamp = displayTimeStamp();
var xml_filename = p_path + p_filenaam + v_timestamp + "." + p_extension;
oStream = new ActiveXObject("ADODB.Stream");
oStream.Open();
//oStream.Type = 1; // adTypeBinary
oStream.WriteText(p_txt); // responseText geeft encoding problemen!
oStream.SaveToFile (xml_filename, 2); // adSaveCreateOverWrite
oStream.Close();
}
function displayTimeStamp() {
var str = "";
var currentTime = new Date();
var currentTime = new Date();
var jaar = currentTime.getFullYear();
var maand = currentTime.getMonth();
var dag = currentTime.getDate();
var hours = currentTime.getHours();
var minutes = currentTime.getMinutes();
var seconds = currentTime.getSeconds();
maand = maand + 1;
if (maand < 10) {
maand = "0" + maand
}
if (dag < 10) {
dag = "0" + dag
}
if (minutes < 10) {
minutes = "0" + minutes
}
if (seconds < 10) {
seconds = "0" + seconds
}
str += jaar + "-" + maand + "-" + dag + "T" + hours + "_" + minutes + "_" + seconds;
return str;
}
function xmltojsdate(datestamp)
{
var pattern = /^(\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)$/;
var pieces = datestamp.match(pattern);
if(!pieces || pieces.length < 6)
return null;
return new Date(pieces[1], pieces[2]-1, pieces[3], pieces[4], pieces[5], pieces[6]);
}
function jsdatextoxml(dt)
{
return toDateString(dt) + "T" + toTimeString(dt);
}
function jsdatetosqls(jsDate)
{
return jsDate.getVarDate();
}
function padout(number) { return (number < 10) ? "0" + number : String(number); }
// Noot: altijd jaar vooraan, goed voor logfiles, niet bedoeld voor presentatie
function toDateString(jsDate)
{
return padout(jsDate.getFullYear()) + "-" + padout(jsDate.getMonth() + 1) + "-" + padout(jsDate.getDate());
}
function toTimeString(jsDate)
{
return padout(jsDate.getHours()) + ":" + padout(jsDate.getMinutes()) + ":" + padout(jsDate.getSeconds());
}
function __Log(s, level)
{ if (level == undefined) level=0;
if (G_log_level > 0 || level==0){
if (level <= G_log_level){
WScript.Echo(s);
var dt = new Date;
var logname = "Log/AxFacilitor_" + padout(dt.getFullYear()) + "_" + padout(dt.getMonth() + 1) + ".log";
var flog = fso.OpenTextFile(logname, 8 /* ForAppending */, true /* create */);
var tms = toDateString(new Date) + " " + toTimeString(new Date);
flog.WriteLine(tms + " " +s);
flog.Close();
}
}
}
// Values v_section = ax, facilitor of common.
// Values v_ini -> allerlei
function Read_Ini_Setting(v_section, v_ini){
var v_result = "";
try{
var l_xml_file = "AxFacilitor.xml";
l_xml=new ActiveXObject("Microsoft.XMLDOM");
l_xml.async=false;
l_xml.load(l_xml_file);
var l_node = "//ini/" + v_section + "/" + v_ini;
var v_result = l_xml.selectSingleNode(l_node).text;
return v_result;
}
catch (e)
{
__Log("Read_Ini_Setting failed: " + e.description,1);
return v_result;
}
}
//---------------------------------------------------------------------------------------------------------------------------------