UNPKG

@sap/subaccount-destination-service-provider

Version:

Provide service consumption of SAP subaccount services

165 lines 8.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SubaccountProviderUtils = exports.SubaccountAbapCatalogServiceUrl = exports.fioriAuthenticationTypeMap = exports.fioriConnectionUsageMap = exports.fioriSystemUsageMap = exports.SupportedFioriConnectionType = exports.SupportedFioriSystemType = exports.UsageType = exports.APPLICATION_XML_HEADER = exports.ANNOTATIONS_SUFFIX = exports.V4_RECOMMENDED_SERVICES_PATH = exports.V4_SERVICES_PATH = exports.ODATA_V4_CATALOG_SERVICES = exports.V2_RECOMMENDED_SERVICES_PATH = exports.V2_SERVICES_PATH = exports.ODATA_V2_CATALOG_SERVICES = exports.API_LIST_DESTINATION_PATH = void 0; exports.getSystemType = getSystemType; exports.getProxyType = getProxyType; exports.buildServiceCommonResponse = buildServiceCommonResponse; exports.filterDestination = filterDestination; exports.getCredentialsHeader = getCredentialsHeader; const vkbeautify = require("vkbeautify"); const service_provider_apis_1 = require("@sap/service-provider-apis"); const messages_1 = require("../i18n/messages"); const store_1 = require("@sap-ux/store"); exports.API_LIST_DESTINATION_PATH = "/api/listDestinations"; exports.ODATA_V2_CATALOG_SERVICES = "/sap/opu/odata/IWFND/CATALOGSERVICE;v=2/"; exports.V2_SERVICES_PATH = "ServiceCollection"; exports.V2_RECOMMENDED_SERVICES_PATH = "RecommendedServiceCollection"; exports.ODATA_V4_CATALOG_SERVICES = "/sap/opu/odata4/iwfnd/config/default/iwfnd/catalog/0002/"; exports.V4_SERVICES_PATH = "ServiceGroups?$expand=DefaultSystem($expand=Services)"; exports.V4_RECOMMENDED_SERVICES_PATH = "ServiceGroups?$expand=DefaultSystem($expand=RecommendedServices)"; exports.ANNOTATIONS_SUFFIX = "/Annotations"; exports.APPLICATION_XML_HEADER = "application/xml"; var UsageType; (function (UsageType) { UsageType["CATALOG_USAGE"] = "odata_abap"; UsageType["SERVICE_HOST_USAGE"] = "odata_gen"; UsageType["FULL_URL"] = "full_url"; })(UsageType || (exports.UsageType = UsageType = {})); var SupportedFioriSystemType; (function (SupportedFioriSystemType) { SupportedFioriSystemType["ABAP_ON_PREM"] = "OnPrem"; })(SupportedFioriSystemType || (exports.SupportedFioriSystemType = SupportedFioriSystemType = {})); var SupportedFioriConnectionType; (function (SupportedFioriConnectionType) { SupportedFioriConnectionType["ABAP_CATALOG"] = "abap_catalog"; SupportedFioriConnectionType["GENERIC_HOST"] = "generic_host"; SupportedFioriConnectionType["ODATA_SERVICE"] = "odata_service"; })(SupportedFioriConnectionType || (exports.SupportedFioriConnectionType = SupportedFioriConnectionType = {})); exports.fioriSystemUsageMap = new Map([[SupportedFioriSystemType.ABAP_ON_PREM, UsageType.CATALOG_USAGE]]); exports.fioriConnectionUsageMap = new Map([ [SupportedFioriConnectionType.ABAP_CATALOG, UsageType.CATALOG_USAGE], [SupportedFioriConnectionType.GENERIC_HOST, UsageType.SERVICE_HOST_USAGE], [SupportedFioriConnectionType.ODATA_SERVICE, UsageType.FULL_URL], ]); exports.fioriAuthenticationTypeMap = new Map([ [store_1.AuthenticationType.Basic, service_provider_apis_1.AuthenticationType.BasicAuthentication], [store_1.AuthenticationType.OAuth2ClientCredential, service_provider_apis_1.AuthenticationType.OAuth2ClientCredentials], ]); exports.SubaccountAbapCatalogServiceUrl = { v2New: `${exports.ODATA_V2_CATALOG_SERVICES}${exports.V2_RECOMMENDED_SERVICES_PATH}`, v2Old: `${exports.ODATA_V2_CATALOG_SERVICES}${exports.V2_SERVICES_PATH}`, v4New: `${exports.ODATA_V4_CATALOG_SERVICES}${exports.V4_RECOMMENDED_SERVICES_PATH}`, v4Old: `${exports.ODATA_V4_CATALOG_SERVICES}${exports.V4_SERVICES_PATH}`, getV2AnnotationUrl(serviceId) { return `${exports.SubaccountAbapCatalogServiceUrl.v2Old}('${serviceId}')${exports.ANNOTATIONS_SUFFIX}`; }, }; exports.SubaccountProviderUtils = { filterSystem(destinationList, dataType, WebIdeBasEnabled = true, proxyType) { if (dataType !== service_provider_apis_1.DataType.CATALOG && dataType !== service_provider_apis_1.DataType.SERVICE_EP && dataType !== service_provider_apis_1.DataType.SERVICE_EP_FULL_URL) { throw new service_provider_apis_1.ServiceProviderError(service_provider_apis_1.ServiceProviderErrorCode.RETRIEVE_DATA, messages_1.messages.ERROR_FAILED_UNSUPPORTED_SYSTEM_TYPE()); } const filteredDestinationList = []; destinationList.forEach((destinationValue) => { if (filterEvaluation(destinationValue, dataType, WebIdeBasEnabled, proxyType)) { filteredDestinationList.push(destinationValue); } }); return filteredDestinationList; }, }; function filterEvaluation(destinationItem, dataType, WebIdeBasEnabled = true, proxyType) { var _a, _b; if (WebIdeBasEnabled) { const destWebIDEEnabled = (_a = destinationItem["WebIDEEnabled"]) !== null && _a !== void 0 ? _a : ""; if (!destWebIDEEnabled || destWebIDEEnabled !== "true") { return false; } } const destSystemType = getSystemType(destinationItem); if (destSystemType !== dataType) { return false; } if (proxyType) { const destProxyType = (_b = destinationItem["ProxyType"]) !== null && _b !== void 0 ? _b : ""; if (getProxyType(destProxyType) !== proxyType) { return false; } } return true; } function getSystemType(destinationConfiguration) { let dataType = service_provider_apis_1.DataType.UNKNOWN; const webIDEUsages = destinationConfiguration.WebIDEUsage || destinationConfiguration.usage || ""; const webIDEAdditionalData = destinationConfiguration.WebIDEAdditionalData || destinationConfiguration.additionalData || ""; if (webIDEUsages.includes(UsageType.CATALOG_USAGE)) { dataType = service_provider_apis_1.DataType.CATALOG; } else { if (webIDEUsages.includes(UsageType.FULL_URL) || (webIDEUsages.includes(UsageType.SERVICE_HOST_USAGE) && webIDEAdditionalData.includes(UsageType.FULL_URL))) { dataType = service_provider_apis_1.DataType.SERVICE_EP_FULL_URL; } else { if (webIDEUsages.includes(UsageType.SERVICE_HOST_USAGE) && !webIDEAdditionalData.includes(UsageType.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; } function buildServiceCommonResponse(encoding, responseBody) { switch (encoding) { case service_provider_apis_1.EncodingMode.XML: return { data: vkbeautify.xml(responseBody), encoding: encoding, }; case service_provider_apis_1.EncodingMode.JSON: return { data: vkbeautify.json(responseBody), encoding: encoding, }; } } function filterDestination(destinationConfiguration, filter) { let passFilter = true; if (filter) { filter.forEach((filterValues, key) => { var _a; const destinationValues = ((_a = destinationConfiguration[key]) !== null && _a !== void 0 ? _a : "") .trim() .replace(" ", "") .split(","); if (filterValues.filter((v) => destinationValues.includes(v)).length == 0) { passFilter = false; return; } }); } return passFilter; } function getCredentialsHeader(credentials) { const headers = {}; if (credentials) { headers.Authorization = credentials.getEncodedBasicAuthentication(); } return headers; } //# sourceMappingURL=systemUtils.js.map