Files
Facilitor/APPL/EXP/axxerion.asp
Erik Groener 362bca2953 YASK#87163 Statusupdate koppeling Axxerion/TOPdesk: verbeterde foutafhandeling
svn path=/Website/trunk/; revision=69042
2025-05-16 09:20:19 +00:00

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(); %>