411 lines
13 KiB
JavaScript
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;
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------------------------------------------------------------------------
|