Name

sn_em_connector.OCISubscriptionConfirmationMessage

Description

Oracle Cloud Push Connector subscription confirmation

Script

var OCISubscriptionConfirmationMessage = Class.create();
OCISubscriptionConfirmationMessage.prototype = {
  initialize: function() {
      this.subscribeURLProperty = "sn_em_connector.evt_mgmt.oci.subscription.URL.Regex";
  	this.subscribeURLDefaultValue = "https:\\/\\/[a-zA-Z0-9_\\-\\.\\/]*?\\.oraclecloud\\.com\\/[a-zA-Z0-9_\\-\\.\\/]*?\\/confirmation\\?[a-zA-Z0-9_\\-\\.\\/=&]*?$";
      this.regValue = gs.getProperty(this.subscribeURLProperty, this.subscribeURLDefaultValue);
      this.subscribeURLRegex = new RegExp(this.regValue);

  },

  subscibeAndGetType: function(request, body) {
  	var confirmationMessageType = "oci_subscriptionconfirmationurl";
  	var alarmNotificationMessageType = "oci_notification_alarm";
  	var eventNotificationMessageType = "oci_notification_event";
      var confirmationurl = request.headers["x-oci-ns-confirmationurl"];
  	var bodyJson = JSON.parse(body);


      if ( typeof confirmationurl !== 'undefined'  && confirmationurl != "" ) {
  		var subscribeURL = bodyJson["ConfirmationURL"];
          if (!this.regValue || this.validateSubscribeURL(subscribeURL)) {
  			try { 
  				var r = new sn_ws.RESTMessageV2('OCI Subscription Confirmation API', 'Default GET');
  				
  				r.setEndpoint(subscribeURL); 
  				
  				var response = r.execute();
  				var responseBody = response.getBody();
  				var httpStatus = response.getStatusCode();
  				gs.info("OCI: Oracle Cloud Push connector: OCI Subscription confirmation (" + subscribeURL + ") return status code: " + httpStatus);
  				if(httpStatus != 200) {
  					gs.error("OCI: Oracle Cloud Push connector: OCI Subscription confirmation return response "+responseBody);
  				}
  				gs.debug("OCI: Oracle Cloud Push connector: OCI Subscription confirmation return response "+responseBody);
  				return confirmationMessageType;
  			} catch(ex) {
  				var message = ex.message;
  			}
          }
      } else {
  		
  		if(typeof bodyJson.dedupeKey !== 'undefined') {
  			return alarmNotificationMessageType;
  		} else if(typeof bodyJson.eventType !== 'undefined'){
  			return eventNotificationMessageType;
  		}
  	}
  	
  	return "others";
  },

  validateSubscribeURL: function(url) {
      var match = this.subscribeURLRegex.test(url);
      if (!match)
          gs.error("OCI: Oracle Cloud Push connector: OracleSubscriberUL " + url + " for OCI SubscriptionConfirmation is not matching the regex " + this.subscribeURLRegex + ". The url is not confirmed");

      return match;

  },

  type: 'OCISubscriptionConfirmationMessage'
};

Sys ID

e96825fb1b8eb0904c2e5422604bcbc8

Offical Documentation

Official Docs: