// -------------------------------------------------------------------------------------- // 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 = "" + "" + " " + v_req + " " + ""; } 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 = "" + "" + "" + "http://tempuri.org/ISupplierService/" + v_API + "" + ""+ v_Url + "" + "" + "" + v_req + "" + ""; 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 = "" + "" + "" + "" + "" + " " + " " + v_API + "" + " " + " " + " " + " " + l_tobias_appserver + "" + " " + " " + l_methodlocation + "" + " " + " " + v_req + " " + " " + "" + "" + " " 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; } } //---------------------------------------------------------------------------------------------------------------------------------