229 lines
8.6 KiB
Plaintext
229 lines
8.6 KiB
Plaintext
<%@ language = "JavaScript" %>
|
|
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: axxerion.asp
|
|
|
|
Description: Conversie van xml naar json voor Axxerion koppeling
|
|
Parameters:
|
|
Context:
|
|
|
|
Notes: Informatie m.b.t. Axxerion API :
|
|
*/
|
|
var JSON_Result = true;
|
|
ANONYMOUS_Allowed = 1;
|
|
%>
|
|
<!-- #include file="../Shared/common.inc" -->
|
|
<!-- #include file="../Shared/save2db.inc" -->
|
|
<!-- #include file="../Shared/xml_converter.inc" -->
|
|
<%
|
|
|
|
var ll = getQParamInt("logging", 0);
|
|
if (ll > 0)
|
|
__Logging = ll; // Voor de rest van dit bestand
|
|
|
|
var glob = new ActiveXObject("Chilkat_9_5_0.Global");
|
|
var success = glob.UnlockBundle(S("puo_chilkat_secret"));
|
|
|
|
function connectAxxerion(methode, actie, params)
|
|
{
|
|
var axxerion_aut = params.info.api_key;
|
|
var axxerion_url = params.info.base_url;
|
|
var missing_id = false;
|
|
var contenttype = "application/json";
|
|
|
|
var axxerion_conn= { aut: params.info.api_key
|
|
, baseurl: params.info.base_url
|
|
, url: ""
|
|
, contenttype: "application/json"
|
|
, methode: methode
|
|
, actie: actie
|
|
};
|
|
|
|
switch (actie) // Gebruik hier de parameter uit de aanroep. Axxerion_conn.actie wordt gewijzigd in attachment-POST door incident-POST en change-POST als params.info.boundary bestaat.
|
|
{
|
|
case "ticket": axxerion_url = "/rest/functions/createupdate/ImportItem/";
|
|
switch (methode)
|
|
{
|
|
case "POST": axxerion_conn.url = axxerion_url;
|
|
break;
|
|
default: axxerion_conn.methode = "";
|
|
}
|
|
break;
|
|
}
|
|
if (missing_id)
|
|
{
|
|
__Logging = 3;
|
|
__Logging = 3;
|
|
__Log({"missing_id": { "paramsinfo": params.info
|
|
, "connection": axxerion_conn
|
|
}
|
|
});
|
|
}
|
|
else
|
|
{
|
|
__Log({"connectiondata": axxerion_conn});
|
|
}
|
|
|
|
axxerion_url = axxerion_conn.baseurl + axxerion_conn.url;
|
|
__Log("URL to Axxerion: " + axxerion_url);
|
|
__Log({"body_data": params.data});
|
|
var errmsg = "";
|
|
var status = -1;
|
|
var data = {};
|
|
if (axxerion_conn.methode != "" && !missing_id)
|
|
{
|
|
try
|
|
{
|
|
var http_request = new ActiveXObject("Chilkat_9_5_0.Http");
|
|
http_request.ProxyDomain = "fclt-proxy.ssn.aareon.com";
|
|
http_request.ProxyPort = "92";
|
|
http_request.setRequestHeader("Authorization", axxerion_aut);
|
|
http_request.setRequestHeader("Accept", "application/json");
|
|
http_request.setRequestHeader("Content-Type", axxerion_conn.contenttype);
|
|
|
|
var body_data = params.data;
|
|
var body_data_str = JSON.stringify(body_data);
|
|
var oCrypto = new ActiveXObject("SLNKDWF.Crypto");
|
|
var body_data_64 = oCrypto.base64(body_data_str);
|
|
|
|
var json_msg = { "stringValue": "webserviceFacilitor"
|
|
, "datasource": "facilitor"
|
|
, "clobMBValue": body_data_64
|
|
};
|
|
|
|
__Log(json_msg);
|
|
var resp = http_request.PostJson2(axxerion_url,"application/json", JSON.stringify(json_msg));
|
|
__Log("Na Post");
|
|
if (http_request.LastMethodSuccess == 0)
|
|
{
|
|
__Log (http_request.LastErrorText);
|
|
errmsg = "Axxerion error. " + http_request.LastErrorText;
|
|
}
|
|
else
|
|
{
|
|
__Log ("Response status code = " + resp.StatusCode);
|
|
status = resp.StatusCode;
|
|
jsonResponseStr = resp.BodyStr;
|
|
__Log (jsonResponseStr);
|
|
if (resp.BodyStr)
|
|
{
|
|
data = JSON.parse( resp.BodyStr);
|
|
}
|
|
else
|
|
{
|
|
data = {};
|
|
}
|
|
}
|
|
}
|
|
catch (e)
|
|
{
|
|
errmsg = "Axxerion connection error: " + e.description;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
errmsg = (missing_id ? "unknown id in " : "No method found for executing ") + axxerion_url;
|
|
}
|
|
var connect_result = { status: status
|
|
, message: errmsg
|
|
, data: data
|
|
};
|
|
if (missing_id)
|
|
{
|
|
__Log({"connect_result": connect_result});
|
|
}
|
|
return connect_result;
|
|
} // connectAxxerion
|
|
|
|
function getResponseStatus(result)
|
|
{
|
|
var response_ok = "200,201,202,204,206";
|
|
var resp_ticket = (result.ticket && (response_ok.indexOf(result.ticket.status) == -1) ? false : true);
|
|
return (resp_ticket) ? 200 : 400;
|
|
}
|
|
|
|
function load_headerdata()
|
|
{
|
|
// Lees de xml-data uit de html-header.
|
|
var xmlReq = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
|
xmlReq.load(Request);
|
|
// Converteer de xml naar json-dataobject.
|
|
var objreq = xmlToJson(xmlReq);
|
|
return objreq.facilitor;
|
|
}
|
|
|
|
function update_mld(methode, actie, melding, params)
|
|
{
|
|
mld_key = melding.mld_melding_key || -1;
|
|
if (params.ticket)
|
|
{
|
|
var opm = (methode == "POST" ? "Creating " : "Updating ") + actie + " Axxerion. Status: " + params.ticket.status + (params.ticket.message.length != 0?" Message: " + params.ticket.message:"");
|
|
shared.trackaction("#MLDTRK", mld_key, opm);
|
|
}
|
|
}
|
|
|
|
// *************************************************************************
|
|
__Log("*> Axxerion.api");
|
|
var facilitor = load_headerdata();
|
|
|
|
if (facilitor && facilitor.axxerion)
|
|
{
|
|
var obj_axxerion = facilitor.axxerion || {};
|
|
//
|
|
// Toevoegen van ticket
|
|
|
|
// Deze log staat als commentaar omdat in deze JSON ook de base64 coded bijlage zit. Dat levert te veel logging op.
|
|
//__Log(obj_axxerion);
|
|
// We gaan alleen een bericht versturen als we een geldige methode hebben. We gebruiken de methode NONE om
|
|
// aan te geven dat dit bericht niet verstuurd hoeft te worden. Dit is de mogelijkheid om
|
|
// in de stylesheet aan te geven dat je geen bericht wilt versturen op deze notificatie.
|
|
if (obj_axxerion.info.methode != 'NONE')
|
|
{
|
|
var axxerion_result = connectAxxerion(obj_axxerion.info.methode, obj_axxerion.info.actie, obj_axxerion);
|
|
__Log(axxerion_result);
|
|
if (axxerion_result.status != -1)
|
|
{ // Nu kunnen de bijlagen verstuurd worden.
|
|
//var attach_result = addAttachments(obj_axxerion, axxerion_result);
|
|
|
|
var result = { ticket: axxerion_result
|
|
, attach: ""
|
|
};
|
|
|
|
if (facilitor.melding)
|
|
{
|
|
update_mld(obj_axxerion.info.methode, obj_axxerion.info.actie, facilitor.melding, result)
|
|
}
|
|
else
|
|
{
|
|
var result = { ticket: { status: 600, message: "Onbekende melding" } };
|
|
__DoLog(facilitor);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var result = { ticket: { status: 400, message: axxerion_result.message } };
|
|
__DoLog(safe.html(result.ticket.message), "ff0000");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var result = { ticket: { status: 200, message: "er hoeft geen bericht verstuurd te worden" } };
|
|
}
|
|
//
|
|
}
|
|
else
|
|
{
|
|
var result = { ticket: { status: 600, message: "geen axxerion data aanwezig" } };
|
|
__DoLog(safe.html(result.ticket.message), "ff0000");
|
|
}
|
|
|
|
result.response_status = getResponseStatus(result);
|
|
__Log({"result": result});
|
|
__Log("*< Axxerion.api: " + result.response_status);
|
|
Response.Status = result.response_status;
|
|
//Response.Write(JSON.stringify(result));
|
|
|
|
ASPPAGE_END(); %>
|