@sap/destination-instance-service-provider
Version:
Provide service consumption of SAP IT services
109 lines • 5.84 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || 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());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DestinationInstanceProviderRepository = void 0;
const cfTools = require("@sap/cf-tools");
const _ = require("lodash");
const basServiceRetriever_1 = require("./basServiceRetriever");
const service_provider_apis_1 = require("@sap/service-provider-apis");
class DestinationInstanceProviderRepository {
constructor() {
this.logger = service_provider_apis_1.DefaultLogger;
}
init(destinationInstanceName, cfTarget) {
return __awaiter(this, void 0, void 0, function* () {
this.destinationInstanceName = destinationInstanceName;
try {
yield this.validateCfConnected(cfTarget);
const serviceInstanceCredentials = yield this.retrieveServiceInstanceCredentials(this.destinationInstanceName);
this.serviceRetriever = this.buildServiceRetriever(serviceInstanceCredentials);
}
catch (e) {
this.logger.error(`init: ${e.message}`);
if (e instanceof service_provider_apis_1.ServiceProviderError) {
e.message = `${service_provider_apis_1.messages.ERROR_FAILED_TO_INIT}: ${e.message}`;
throw e;
}
else {
throw new service_provider_apis_1.ServiceProviderError(service_provider_apis_1.ServiceProviderErrorCode.INTERNAL_ERROR, e);
}
}
});
}
getSystems(filter) {
return __awaiter(this, void 0, void 0, function* () {
try {
if (this.serviceRetriever.retrieveDestinations) {
return yield this.serviceRetriever.retrieveDestinations();
}
}
catch (e) {
this.logger.error(`getSystems: ${e.message}`);
if (e instanceof service_provider_apis_1.ServiceProviderError) {
e.message = `${service_provider_apis_1.messages.SYS_ERROR_FAIL_RETRIEVE_DESTINATIONS}: ${e.message}`;
throw e;
}
else {
throw new service_provider_apis_1.ServiceProviderError(service_provider_apis_1.ServiceProviderErrorCode.INTERNAL_ERROR, e);
}
}
throw new service_provider_apis_1.ServiceProviderError(service_provider_apis_1.ServiceProviderErrorCode.INTERNAL_ERROR, service_provider_apis_1.messages.SYS_ERROR_RETRIEVE_DESTINATION_METHOD);
});
}
getServiceRetriever() {
return this.serviceRetriever;
}
validateCfConnected(cfTarget) {
return __awaiter(this, void 0, void 0, function* () {
let error;
if (cfTarget) {
}
try {
const target = yield cfTools.cfGetTarget(true);
if (!_.isEmpty(target.org) && !_.isEmpty(target.space)) {
return;
}
}
catch (e) {
this.logger.error(`${service_provider_apis_1.messages.SYS_ERROR_MISSING_CF_CONFIGURATIONS}: ${e.message}`);
error = new service_provider_apis_1.ServiceProviderError(service_provider_apis_1.ServiceProviderErrorCode.CF_CONFIGURATION, e);
}
throw error
? error
: new service_provider_apis_1.ServiceProviderError(service_provider_apis_1.ServiceProviderErrorCode.CF_CONFIGURATION, service_provider_apis_1.messages.SYS_ERROR_MISSING_CF_CONFIGURATIONS);
});
}
retrieveServiceInstanceCredentials(destinationInstanceName) {
return __awaiter(this, void 0, void 0, function* () {
var _a, _b, _c, _d;
try {
const cfServiceInstanceCredentials = yield cfTools.apiGetInstanceCredentials(destinationInstanceName);
return {
clientId: ((_a = cfServiceInstanceCredentials.uaa) === null || _a === void 0 ? void 0 : _a.clientid) ||
((_b = cfServiceInstanceCredentials.credentials) === null || _b === void 0 ? void 0 : _b.clientid) ||
cfServiceInstanceCredentials.clientid,
clientSecret: ((_c = cfServiceInstanceCredentials.uaa) === null || _c === void 0 ? void 0 : _c.clientsecret) ||
((_d = cfServiceInstanceCredentials.credentials) === null || _d === void 0 ? void 0 : _d.clientsecret) ||
cfServiceInstanceCredentials.clientsecret,
};
}
catch (e) {
e.message = `${service_provider_apis_1.messages.SYS_ERROR_RETRIEVING_SERVICE_KEY}: ${e.message}`;
throw new service_provider_apis_1.ServiceProviderError(service_provider_apis_1.ServiceProviderErrorCode.RETRIEVE_DATA, e);
}
});
}
buildServiceRetriever(serviceCredentials) {
return new basServiceRetriever_1.BasServiceRetriever(serviceCredentials);
}
}
exports.DestinationInstanceProviderRepository = DestinationInstanceProviderRepository;
//# sourceMappingURL=destinationInstanceProviderRepository.js.map