in scripts/lua/management/lib/apis.lua [113:145]
function _M.addAPI(dataStore, decoded, existingAPI)
local basePath = decoded.basePath:sub(1,1) == '/' and decoded.basePath:sub(2) or decoded.basePath
basePath = basePath:sub(-1) == '/' and basePath:sub(1, -2) or basePath
local uuid = existingAPI ~= nil and existingAPI.id or utils.uuid()
local managedUrl = utils.concatStrings({GATEWAY_URL, "/api/", decoded.tenantId})
if basePath:sub(1,1) ~= '' then
managedUrl = utils.concatStrings({managedUrl, "/", basePath})
end
local tenantObj = dataStore:getTenant(decoded.tenantId)
local managedUrlObj = {
id = uuid,
name = decoded.name,
basePath = utils.concatStrings({"/", basePath}),
tenantId = decoded.tenantId,
tenantNamespace = tenantObj.namespace,
tenantInstance = tenantObj.instance,
resources = decoded.resources,
managedUrl = managedUrl
}
managedUrlObj = dataStore:addAPI(uuid, managedUrlObj, existingAPI)
for path, resource in pairs(decoded.resources) do
local gatewayPath = utils.concatStrings({basePath, path})
gatewayPath = (gatewayPath:sub(1,1) == '/') and gatewayPath:sub(2) or gatewayPath
resource.apiId = uuid
print('creating resource: ' .. cjson.encode(resource) .. 'path: ' .. gatewayPath .. 'tenantobj' .. cjson.encode(tenantObj))
resources.addResource(dataStore, resource, gatewayPath, tenantObj)
end
return managedUrlObj
end