pcp-server-nodejs-sdk
Version:
[](https://sonarcloud.io/summary/new_code?id=PAYONE-GmbH_PCP-server-nodeJS-SDK) [ || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import fetch, {} from 'node-fetch';
import { CommunicatorConfiguration } from '../CommunicatorConfiguration.js';
import { RequestHeaderGenerator } from '../RequestHeaderGenerator.js';
import { ApiErrorResponseException, ApiResponseRetrievalException } from '../errors/index.js';
function isErrorResponse(parsed) {
if (typeof parsed !== 'object' || parsed === null) {
return false;
}
const record = parsed;
if (Object.prototype.hasOwnProperty.call(record, 'errorId') && typeof record['errorId'] !== 'string') {
return false;
}
if (Object.prototype.hasOwnProperty.call(record, 'errorId') && !Array.isArray(record['errors'])) {
return false;
}
return true;
}
export const MERCHANT_ID_REQUIRED_ERROR = 'Merchant ID is required';
export const COMMERCE_CASE_ID_REQUIRED_ERROR = 'Commerce Case ID is required';
export const CHECKOUT_ID_REQUIRED_ERROR = 'Checkout ID is required';
export class BaseApiClient {
static parseVoid() {
return;
}
static parseJson(body) {
const parsed = JSON.parse(body);
if (typeof parsed !== 'object' || parsed === null) {
throw new TypeError('Parsed JSON is not an object');
}
return parsed;
}
constructor(config) {
this.config = config;
this.requestHeaderGenerator = new RequestHeaderGenerator(config);
}
getRequestHeaderGenerator() {
return this.requestHeaderGenerator;
}
getConfig() {
return this.config;
}
makeApiCall(url_1, requestInit_1) {
return __awaiter(this, arguments, void 0, function* (url, requestInit, parseBody = BaseApiClient.parseJson) {
var _a;
requestInit = this.requestHeaderGenerator.generateAdditionalRequestHeaders(url, requestInit);
const response = yield fetch(url, requestInit);
const body = yield response.text();
let parsed;
try {
parsed = parseBody(body);
}
catch (error) {
throw new ApiResponseRetrievalException(response.status, body, error instanceof Error ? error : undefined);
}
if (!response.ok) {
if (isErrorResponse(parsed)) {
throw new ApiErrorResponseException(response.status, body, (_a = parsed.errors) !== null && _a !== void 0 ? _a : []);
}
throw new ApiResponseRetrievalException(response.status, body);
}
return parsed;
});
}
}
//# sourceMappingURL=BaseApiClient.js.map