Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- JiraIncUtils = (function(){
- var jiraDomain = gs.getProperty('x_116151_jira_inci.jira_service_desk'),
- jiraUser = JSON.parse(gs.getProperty('x_116151_jira_inci.jira_sd_integration_user')),
- jiraUsername = jiraUser.name,
- jiraUserPassword = jiraUser.password,
- jiraRelativeUpdatePath = gs.getProperty('x_116151_jira_inci.jira_update_endpoint'),
- jiraRelativeCreatePath = gs.getProperty('x_116151_jira_inci.jira_create_endpoint'),
- jiraUpdatePath = jiraDomain + jiraRelativeUpdatePath,
- jiraCreatePath = jiraDomain + jiraRelativeCreatePath,
- incomingRequestTable = 'x_116151_jira_inci_jira_requests',
- outgoingRequestTable = 'x_116151_jira_inci_outgoing_jira_rest_messages',
- transformJSONsTable = 'x_116151_jira_inci_jira_integration_transform_jsons',
- incidentTable = 'incident',
- maximumOutgoingRetryCount = gs.getProperty('x_116151_jira_inci.outgoing_rest_retry_count_limit'),
- incomingRequestStates = {
- NOT_YET_PROCESSED: '0',
- SUCCESS: '1',
- ERROR: '2'
- },
- outgoingRequestMethods = {
- CREATE: '0',
- UPDATE: '1'
- };
- var currentIncomingTransformMap = (function() {
- var transformRec = new GlideRecord(transformJSONsTable);
- transformRec.get('is_current_incoming', true);
- return {
- sys_id: transformRec.sys_id.toString(),
- map: JSON.parse(transformRec.transform_json.toString())
- };
- })();
- var currentOutgoingTransformMap = (function() {
- var transformRec = new GlideRecord(transformJSONsTable);
- transformRec.get('is_current_outgoing', true);
- return {
- sys_id: transformRec.sys_id.toString(),
- map: JSON.parse(transformRec.transform_json.toString())
- };
- })();
- var getNumFromQuery = function(request) {
- return request.queryParams.number[0];
- };
- var transform = function(transformMap, sourceRec, targetRec) {
- for(var param in transformMap) {
- if(sourceRec[param] == undefined) {
- continue;
- }
- targetRec[transformMap[param]] = sourceRec[param].toString();
- }
- };
- var brUniqueIncomingMap = function(transformRec) {
- var transformRecords = new GlideRecord(transformJSONsTable);
- transformRecords.addQuery('is_current_incoming', true);
- transformRecords.addQuery('sys_id', '!=', transformRec.sys_id);
- transformRecords.query();
- while(transformRecords.next()) {
- transformRecords.is_current_incoming = false;
- transformRecords.update();
- }
- };
- var brUniqueOutgoingMap = function(transformRec) {
- var transformRecords = new GlideRecord(transformJSONsTable);
- transformRecords.addQuery('is_current_outgoing', true);
- transformRecords.addQuery('sys_id', '!=', transformRec.sys_id);
- transformRecords.query();
- while(transformRecords.next()) {
- transformRecords.is_current_outgoing = false;
- transformRecords.update();
- }
- };
- var processRESTRequest = function(request) {
- try {
- var requestRec = new GlideRecord(incomingRequestTable);
- requestRec.initialize();
- requestRec.request_body = JSON.stringify(request.body.data);
- requestRec.incident_number = getNumFromQuery(request); //query param properties come as arrays
- requestRec.insert();
- }
- catch(err) {
- var requestRec = new GlideRecord(incomingRequestTable);
- requestRec.initialize();
- requestRec.message = err;
- requestRec.incident_number = getNumFromQuery(request); //query param properties come as arrays
- requestRec.state = incomingRequestStates.ERROR;
- requestRec.insert();
- }
- };
- var brUpdateIncidentIncoming = function(incomingRec) {
- try {
- var incidentRec = new GlideRecord(incidentTable);
- if(incidentRec.get('number', incomingRec.incident_number)) {
- var request = JSON.parse(incomingRec.request_body);
- transform(currentIncomingTransformMap.map, request, incidentRec);
- incidentRec.update();
- incomingRec.transform_json = currentIncomingTransformMap.sys_id;
- incomingRec.state = incomingRequestStates.SUCCESS;
- incomingRec.message = 'Successfully updated ' + incomingRec.incident_number;
- }
- else {
- incomingRec.state = incomingRequestStates.ERROR;
- incomingRec.message = incomingRec.incident_number + ' does not exist';
- }
- incomingRec.update();
- }
- catch(err) {
- incomingRec.state = incomingRequestStates.ERROR;
- incomingRec.message = err;
- incomingRec.update();
- }
- };
- var sendJiraRESTMsg = function(incidentRec, method) {
- try {
- var outgoingRec = new GlideRecord(outgoingRequestTable);
- outgoingRec.initialize();
- var updatePath = jiraUpdatePath.replace('{sys_id}', incidentRec.sys_id),
- endPoint = method == outgoingRequestMethods.CREATE ? jiraCreatePath : updatePath,
- reqBody = {},
- httpMethod = method == outgoingRequestMethods.CREATE ? 'POST' : 'PATCH';
- transform(currentOutgoingTransformMap.map, incidentRec, reqBody);
- var request = new sn_ws.RESTMessageV2();
- request.setEndpoint(endPoint);
- request.setHttpMethod(httpMethod);
- request.setBasicAuth(jiraUsername, jiraUserPassword);
- request.setRequestHeader('Accept', 'application/json');
- request.setRequestHeader('Content-Type','application/json');
- request.setRequestBody(JSON.stringify(reqBody));
- var response = request.execute();
- outgoingRec.request_body = request.getRequestBody();
- outgoingRec.transform_json = currentOutgoingTransformMap.sys_id;
- outgoingRec.response_body = JSON.stringify(response.getBody());
- outgoingRec.http_status_code = response.getStatusCode();
- outgoingRec.incident_number = incidentRec.number;
- outgoingRec.method = method;
- outgoingRec.insert();
- }
- catch(err) {
- var outgoingRec = new GlideRecord(outgoingRequestTable);
- outgoingRec.initialize();
- outgoingRec.message = err;
- outgoingRec.incident_number = incidentRec.number;
- outgoingRec.insert();
- }
- };
- var brSendJiraIncUpdate = function(incidentRec) {
- sendJiraRESTMsg(incidentRec, outgoingRequestMethods.UPDATE);
- };
- var brSendJiraIncCreate = function(incidentRec) {
- sendJiraRESTMsg(incidentRec, outgoingRequestMethods.CREATE);
- };
- return {
- processRESTRequest: processRESTRequest,
- brUpdateIncidentIncoming: brUpdateIncidentIncoming,
- brSendJiraIncUpdate: brSendJiraIncUpdate,
- brSendJiraIncCreate: brSendJiraIncCreate,
- brUniqueIncomingMap: brUniqueIncomingMap,
- brUniqueOutgoingMap: brUniqueOutgoingMap
- };
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement