Name

global.SaOperationsWrapper

Description

No description available

Script

var SaOperationsWrapper = Class.create();
SaOperationsWrapper.prototype = {
  initialize: function(handlerClass) {
      this.handler = new handlerClass();
  },

  process: function(request, response, action, hasBody) {
      //extract parameters from request and create paramsDTO


      var refererParams = this.getRefererParameters(request);
      var paramsDTO = new SNC.RequestParametersDTO();
      var queryParams = request.queryParams;
      var params = [];
      var serviceId = this.retrieveServiceIdFromParams(queryParams);
      for (var queryParam in queryParams) {
          if (queryParams.hasOwnProperty(queryParam)) {
              params.push(queryParam);
              paramsDTO.setParameter(queryParam, queryParams[queryParam]);
          }
      }

      if (hasBody) {
          var bodyParams;
          var requestBody = request.body;
          var requestData = requestBody.data; //May be an array or a single object
          if (requestData instanceof Array) {
              bodyParams = requestData[0];
          } else {
              bodyParams = requestData;
          }
          serviceId = (serviceId == null) ? this.retrieveServiceIdFromParams(bodyParams) : serviceId;
          for (var bodyParam in bodyParams) {
              if (bodyParams.hasOwnProperty(bodyParam)) {
                  params.push(bodyParam);
                  paramsDTO.setParameter(bodyParam, bodyParams[bodyParam]);
              }
          }
      }

      var responseString = 'FALLBACK';

      if (serviceId != null && serviceId.startsWith('PREVIEW')) {
          var pmh = new sn_sm_scoped_app.PreviewMapHandler();
          responseString = String(pmh.process(serviceId, action, paramsDTO));
      }

      if (responseString == 'FALLBACK')
          responseString = String(this.handler.callAction(action, paramsDTO));

      response.setStatus(this.handler.getResponseStatus());
      response.setContentType(this.handler.getResponseContentType());

      var writer = response.getStreamWriter();
      writer.writeString(responseString);
  },

  processStreams: function(request, response, action, hasBody) {
      //extract parameters from request and create paramsDTO
      var paramsDTO = new SNC.RequestParametersDTO();
      var queryParams = request.queryParams;
      for (var queryParam in queryParams) {
          if (queryParams.hasOwnProperty(queryParam))
              paramsDTO.setParameter(queryParam, queryParams[queryParam]);
      }

      if (hasBody) {
          var requestBody = request.body;
          var inputDataStream = requestBody.dataStream;
          var outputStream = response.getStreamWriter();
          this.handler.callActionStream(action, paramsDTO, inputDataStream, outputStream);
      } else {
          this.handler.callActionStream(action, paramsDTO, null, response.getStreamWriter());
      }

      response.setStatus(this.handler.getResponseStatus());

  },

  retrieveServiceIdFromParams: function(params) {
      var propertiesToCheck = ["bsId", "id"];
      for (var i in propertiesToCheck) {
          if (params.hasOwnProperty(propertiesToCheck[i])) {
              return String(params[propertiesToCheck[i]]);
          }
      }
      return null;
  },


  type: 'SaOperationsWrapper'
};

Sys ID

88bf1a9b7f120300995cbaf8befa91c4

Offical Documentation

Official Docs: