in core/routemgmt/common/utils.js [422:521]
actionName: getActionNameFromActionUrl(swaggerApi.paths[path].operations[op].backendUrl),
actionNamespace: getActionNamespaceFromActionUrl(swaggerApi.paths[path].operations[op].backendUrl)
};
}
delete swaggerApi.paths[path].operations;
}
delete swaggerApi.resources;
delete swaggerApi.name;
delete swaggerApi.id;
delete swaggerApi.managedUrl;
delete swaggerApi.tenantId;
return swaggerApi;
}
/**
* Create a base swagger API object containing the API basepath, but no endpoints
* Parameters:
* basepath - Required. API basepath
* apiname - Optional. API friendly name. Defaults to basepath
* Returns:
* swaggerApi - API swagger JSON object
*/
function generateBaseSwaggerApi(basepath, apiname) {
var swaggerApi = {
swagger: "2.0",
info: {
title: apiname || basepath,
version: "1.0.0"
},
basePath: basepath,
paths: {}
};
return swaggerApi;
}
/**
* Take an API in JSON swagger format and create an API GW compatible
* API configuration JSON object
* Parameters:
* swaggerApi - JSON object defining API in swagger format
* Returns:
* gwApi - JSON object defining API in API GW format
*/
function generateGwApiFromSwaggerApi(swaggerApi) {
var gwApi = {};
gwApi.basePath = swaggerApi.basePath;
gwApi.name = swaggerApi.info.title;
gwApi.resources = {};
for (var path in swaggerApi.paths) {
console.log('generateGwApiFromSwaggerApi: processing swaggerApi path: ', path);
gwApi.resources[path] = {};
var gwpathop = gwApi.resources[path].operations = {};
for (var operation in swaggerApi.paths[path]) {
console.log('generateGwApiFromSwaggerApi: processing swaggerApi operation: ', operation);
console.log('generateGwApiFromSwaggerApi: processing operation backendMethod: ', swaggerApi.paths[path][operation]['x-ibm-op-ext'].backendMethod);
var gwop = gwpathop[operation] = {};
gwop.backendMethod = swaggerApi.paths[path][operation]['x-ibm-op-ext'].backendMethod;
gwop.backendUrl = swaggerApi.paths[path][operation]['x-ibm-op-ext'].backendUrl;
gwop.policies = swaggerApi.paths[path][operation]['x-ibm-op-ext'].policies;
}
}
return gwApi;
}
/**
* Take an existing API in JSON swagger format, and update it with a single path/operation.
* The addition can be an entirely new path or a new operation under an existing path.
* Parameters:
* swaggerApi - API to augment in swagger JSON format. This will be updated.
* endpoint - JSON object describing new path/operation. Required fields
* {
* gatewayMethod:
* gatewayPath:
* action: {
* authkey:
* backendMethod:
* backendUrl:
* name:
* namespace:
* }
* }
* Returns:
* swaggerApi - Input JSON object in swagger format containing the union of swaggerApi + new path/operation
*/
function addEndpointToSwaggerApi(swaggerApi, endpoint) {
var operation = endpoint.gatewayMethod.toLowerCase();
var auth_base64 = Buffer.from(endpoint.action.authkey,'ascii').toString('base64');
// If the relative path already exists, append to it; otherwise create it
if (!swaggerApi.paths[endpoint.gatewayPath]) {
swaggerApi.paths[endpoint.gatewayPath] = {};
}
swaggerApi.paths[endpoint.gatewayPath][operation] = {
'x-ibm-op-ext': {
backendMethod: endpoint.action.backendMethod,
backendUrl: endpoint.action.backendUrl,
actionName: endpoint.action.name,
actionNamespace: endpoint.action.namespace,
policies: [
{