UNPKG

@sap/destination-instance-service-provider

Version:

Provide service consumption of SAP IT services

95 lines 4.49 kB
"use strict"; 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