UNPKG

@paciolan/cybersource-sdk

Version:
165 lines (164 loc) 7.39 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.AuthenticationHeader = void 0; const MerchantConfig_1 = __importDefault(require("./MerchantConfig")); const Constants = __importStar(require("../util/Constants")); const Logger = __importStar(require("../logging/Logger")); const Authorization = __importStar(require("./Authorization")); const PayloadDigest = __importStar(require("../payloadDigest/DigestGenerator")); const querystring = __importStar(require("querystring")); // Code added by Infosys dev team class AuthenticationHeader { constructor() { this.constants = Constants; } /** * This method will set the merchantConfig object global * @param configObject merchantConfiguration properties. */ setConfiguration(configObject) { this.merchantConfig = new MerchantConfig_1.default(configObject); this.constants = Constants; if (this.merchantConfig.getIntermediateHost()) { if (this.merchantConfig .getIntermediateHost() .startsWith(this.constants.HTTP_URL_PREFIX) || this.merchantConfig.getIntermediateHost().startsWith('http://')) { this.basePath = this.merchantConfig.getIntermediateHost(); } else { this.basePath = this.constants.HTTP_URL_PREFIX + this.merchantConfig.getIntermediateHost(); } } else { this.basePath = this.constants.HTTP_URL_PREFIX + this.merchantConfig.getRequestHost(); } this.logger = Logger.getLogger(this.merchantConfig, 'ApiClient'); } /** * This method is to generate headers for http and jwt authentication. */ callAuthenticationHeader(httpMethod, requestTarget, requestBody, headerParams) { var _a, _b, _c; this.merchantConfig.setRequestTarget(requestTarget); this.merchantConfig.setRequestType(httpMethod); this.merchantConfig.setRequestJsonData(requestBody); this.logger.info('Authentication Type : ' + this.merchantConfig.getAuthenticationType()); this.logger.info(this.constants.REQUEST_TYPE + ' : ' + httpMethod.toUpperCase()); var token = Authorization.getToken(this.merchantConfig, this.logger); if (((_a = this.merchantConfig.getAuthenticationType()) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === this.constants.JWT) { token = 'Bearer ' + token; headerParams['Authorization'] = token; this.logger.info(this.constants.AUTHORIZATION + ' : ' + token); } else if (((_b = this.merchantConfig.getAuthenticationType()) === null || _b === void 0 ? void 0 : _b.toLowerCase()) === this.constants.HTTP) { var date = new Date(Date.now()).toUTCString(); if (httpMethod.toLowerCase() === this.constants.POST || httpMethod.toLowerCase() === this.constants.PATCH || httpMethod.toLowerCase() === this.constants.PUT) { var digest = PayloadDigest.generateDigest(this.merchantConfig, this.logger); digest = this.constants.SIGNATURE_ALGORITHAM + digest; this.logger.info(this.constants.DIGEST + ' : ' + digest); headerParams['digest'] = digest; } headerParams['v-c-merchant-id'] = this.merchantConfig.getMerchantID(); headerParams['date'] = date; headerParams['host'] = this.merchantConfig.getRequestHost(); headerParams['signature'] = token; headerParams['User-Agent'] = this.constants.USER_AGENT_VALUE; this.logger.info('v-c-merchant-id : ' + this.merchantConfig.getMerchantID()); this.logger.info('date : ' + date); this.logger.info('host : ' + this.merchantConfig.getRequestHost()); this.logger.info('signature : ' + token); this.logger.info('User-Agent : ' + headerParams['User-Agent']); this.logger.info(this.constants.END_TRANSACTION); } else if (((_c = this.merchantConfig.getAuthenticationType()) === null || _c === void 0 ? void 0 : _c.toLowerCase()) === this.constants.OAUTH) { token = 'Bearer ' + token; headerParams['Authorization'] = token; // this.logger.info(this.constants.AUTHORIZATION + ' : ' + token); } return headerParams; } /** * Build request target required for the signature generation */ buildRequestTarget(path, pathParams, queryParams) { if (!path.match(/^\//)) { path = '/' + path; } var _this = this; var requestTarget = path.replace(/\{([\w-]+)\}/g, function (fullMatch, key) { var value; if (pathParams.hasOwnProperty(key)) { value = _this.paramToString(pathParams[key]); } else { value = fullMatch; } return encodeURIComponent(value); }); // added by infosys team, to generate requestTarget with queryParams if (Object.keys(queryParams).length !== 0) { var queryFlag = false; var queryArray = {}; Object.keys(queryParams).forEach(function (prop) { var val = queryParams[prop]; if (val !== undefined) { queryArray[prop] = val; queryFlag = true; } }); if (queryFlag) requestTarget = requestTarget + '?' + querystring.stringify(queryArray); } return requestTarget; } /** * Returns a string representation for an actual parameter. * @param param The actual parameter. * @returns The string representation of <code>param</code>. */ paramToString(param) { if (param == undefined || param == null) { return ''; } if (param instanceof Date) { return param.toJSON(); } return param.toString(); } } exports.AuthenticationHeader = AuthenticationHeader;