@sap/destination-instance-service-provider
Version:
Provide service consumption of SAP IT services
95 lines • 4.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DestinationToProviderSystem = DestinationToProviderSystem;
exports.ServiceResponseToService = ServiceResponseToService;
exports.AnnotationResponseToAnnotations = AnnotationResponseToAnnotations;
const _ = require("lodash");
const destinationInstanceProviderSystem_1 = require("./destinationInstanceProviderSystem");
const service_provider_apis_1 = require("@sap/service-provider-apis");
const CATALOG_USAGE = "odata_abap";
const SERVICE_USAGE = "odata_gen";
const FULL_URL = "full_url";
const logger = service_provider_apis_1.DefaultLogger;
function DestinationToProviderSystem(responseDestination, retriever) {
return new destinationInstanceProviderSystem_1.DestinationInstanceProviderSystem(responseDestination.Name, responseDestination.Host, getSystemType(responseDestination), getProxyType(responseDestination.ProxyType), responseDestination.Authentication, retriever, responseDestination["product.name"], responseDestination.Description);
}
function ServiceResponseToService(responseService, protocol) {
var _a, _b, _c;
if (protocol == "odatav2") {
return [
new service_provider_apis_1.ODataService(responseService.TechnicalServiceName, responseService.ServiceUrl, responseService.ID, protocol),
];
}
if (protocol == "odatav4") {
const services = [];
const responseServices = ((_a = responseService === null || responseService === void 0 ? void 0 : responseService.DefaultSystem) === null || _a === void 0 ? void 0 : _a.Services)
? (_b = responseService === null || responseService === void 0 ? void 0 : responseService.DefaultSystem) === null || _b === void 0 ? void 0 : _b.Services
: (_c = responseService === null || responseService === void 0 ? void 0 : responseService.DefaultSystem) === null || _c === void 0 ? void 0 : _c.RecommendedServices;
if (!responseServices) {
logger.error(`ServiceResponseToService: Response service did not include known service field`);
return services;
}
for (const service of responseServices) {
if (service) {
services.push(new service_provider_apis_1.ODataService(service.ServiceAlias, service.ServiceUrl, service.ServiceId, protocol));
}
}
return services;
}
}
function AnnotationResponseToAnnotations(parsedAnnotations) {
const annotations = [];
let entry = _.get(parsedAnnotations, ["feed", "entry"], null);
if (entry && !Array.isArray(entry)) {
entry = [entry];
}
if (entry) {
entry.forEach((annotationEntry) => {
var _a;
const properties = annotationEntry["m:properties"];
if (properties) {
annotations.push({
src: (_a = annotationEntry.content) === null || _a === void 0 ? void 0 : _a.src,
technicalName: properties["d:TechnicalName"],
version: properties["d:Version"],
mediaType: properties["d:MediaType"],
});
}
});
}
return annotations;
}
function getSystemType(destinationConfiguration) {
let dataType = service_provider_apis_1.DataType.UNKNOWN;
const webIDEUsages = _.get(destinationConfiguration, "WebIDEUsage", "");
const webIDEAdditionalData = _.get(destinationConfiguration, "WebIDEAdditionalData", "");
if (webIDEUsages.includes(CATALOG_USAGE)) {
dataType = service_provider_apis_1.DataType.CATALOG;
}
else {
if (webIDEUsages.includes(SERVICE_USAGE) && webIDEAdditionalData.includes(FULL_URL)) {
dataType = service_provider_apis_1.DataType.SERVICE_EP_FULL_URL;
}
else {
if (webIDEUsages.includes(SERVICE_USAGE) && !webIDEAdditionalData.includes(FULL_URL)) {
dataType = service_provider_apis_1.DataType.SERVICE_EP;
}
}
}
return dataType;
}
function getProxyType(destinationProxyType) {
let proxyType = service_provider_apis_1.ProxyType.UNKNOWN;
switch (destinationProxyType) {
case "Internet": {
proxyType = service_provider_apis_1.ProxyType.INTERNET;
break;
}
case "OnPremise": {
proxyType = service_provider_apis_1.ProxyType.ONPREMISE;
break;
}
}
return proxyType;
}
//# sourceMappingURL=serviceProviderAdapter.js.map