REST API and script include

tsoct
Tera Guru

The script included below is returning an undefined error. How can I pass the bearer token to other function within the script include? 

Imagine i will have more function within this script include, and not limited to only one getORG

var GetCostCenterDetails = Class.create();
GetCostCenterDetails.prototype = {
    initialize: function() {},

    _getToken: function() {

        try {
            var rest = new sn_ws.RESTMessageV2('CPNYCostCenter', 'Get Token');          

            var response = rest.execute();
            var responseBody = response.getBody();
            var httpStatus = response.getStatusCode();

            if (httpStatus.toString().startsWith("2")) {
                var parsedData = JSON.parse(responseBody);
                var token = parsedData.access_token;
				return token;
            } else {
                gs.error('No token generated');
            }

        } catch (ex) {
            gs.error("\nException occured: " + ex);
        }
    },

    getORG: function() {
   	
        var result = {};

        try {
			var token = this._getToken();
            var rest1 = new sn_ws.RESTMessageV2('CPNYCostCenter', "Get ORG");
            rest1.setRequestHeader('Authorization', 'Bearer ' + token);
 
            var response1 = rest1.execute();

            var responseBody1 = response1.getBody();
            var httpStatus1 = response1.getStatusCode();

            if (httpStatus1.toString().startsWith("2")) {
                var parsedData1 = JSON.parse(responseBody1);

                if (parsedData1.value) {
                    fields = [];
                    var keys = Object.keys(parsedData1.value[0]);
                    for (var i = 0; i < keys.length; i++) {
                        var resultObject = {};
                        resultObject.name = keys[i];
                        resultObject.display_value = parsedData1.value[0][keys[i]];
                        fields.push(resultObject);
                    }

                    result.fields = [];
                    result.fields = fields;
                }
            } else {
                gs.error('Error ORG');
            }

        } catch (ex) {
            var message = ex.getMessage();
            gs.error("GetCostCenterDetailsError: " + message);
        }
        return result;
    },

    type: 'GetCostCenterDetails'
};

 

1 ACCEPTED SOLUTION

Community Alums
Not applicable

Try with

initialize: function() {
  
    this.token = "" ? this._getToken() : this.token;
},

and later assign the value to it like 

            if (httpStatus.toString().startsWith("2")) {
                var parsedData = JSON.parse(responseBody);
                var token = parsedData.access_token;
				return token;

and 

   try {
			//var token = this._getToken();
            var rest1 = new sn_ws.RESTMessageV2('CPNYCostCenter', "Get ORG");
            rest1.setRequestHeader('Authorization', 'Bearer ' + this.token);

View solution in original post

6 REPLIES 6

Community Alums
Not applicable

Try with

initialize: function() {
  
    this.token = "" ? this._getToken() : this.token;
},

and later assign the value to it like 

            if (httpStatus.toString().startsWith("2")) {
                var parsedData = JSON.parse(responseBody);
                var token = parsedData.access_token;
				return token;

and 

   try {
			//var token = this._getToken();
            var rest1 = new sn_ws.RESTMessageV2('CPNYCostCenter', "Get ORG");
            rest1.setRequestHeader('Authorization', 'Bearer ' + this.token);

Community Alums
Not applicable

Havent tested it but you can surely keep your token as variable accessible to the entire object on initializing it. It works for sure - haven tested the syntax here

I got it! thank you !!

Hello @Community Alums , i have another related question.

So, for another function, I need to pass two parameters to the endpoint, but it does not return any value. Could you tell what is wrong?

Thank you

 

getACTIVITY2: function() {
        try {
            var r = new sn_ws.RESTMessageV2('CPNYCostCenter', 'Get ACTIVITY');
            r.setStringParameterNoEscape('p_fund', 'AF');
            r.setStringParameterNoEscape('p_org', 'CSIPM');
			r.setRequestHeader('Authorization', 'Bearer ' + this.token);

            var response2 = r.execute();
            var responseBody2 = response2.getBody();
            var httpStatus2 = response2.getStatusCode();
			gs.info("The Activity: " + responseBody2);
        } catch (ex) {
            var message = ex.message;
        }
    },

 

tsoct_0-1715698207847.png