function _M.parseSwagger()

in scripts/lua/management/lib/swagger.lua [213:260]


function _M.parseSwagger(swagger)
  local backends = parseBackends(swagger)
  local policies = parsePolicies(swagger)
  local security = parseSecurity(swagger)
  local corsObj = parseCors(swagger)
  local decoded = {
    name = swagger.info.title,
    basePath = swagger.basePath,
    resources = {}
  }
  for path, verbObj in pairs(swagger.paths) do
    decoded.resources[path] = { operations = {} }
    decoded.resources[path].cors = corsObj
    for verb, value in pairs(verbObj) do
      decoded.resources[path].operations[verb] = {}
      local verbObj = decoded.resources[path].operations[verb]
      verbObj.policies = utils.deepCloneTable(policies) or {}
      verbObj.security = security
      if backends ~= nil then
        local backend = (backends["all"] ~= nil) and backends["all"] or backends[value.operationId]
        verbObj.backendUrl = backend.backendUrl
        verbObj.backendMethod = (backend.backendMethod == 'keep') and verb or backend.backendMethod
        if backend.policy ~= nil then
          local globalReqMappingPolicy = nil;
          for _, policy in pairs(verbObj.policies) do
            if policy.type == 'reqMapping' then
              globalReqMappingPolicy = policy;
            end
          end
          if globalReqMappingPolicy ~= nil then
            for _, v in pairs(backend.policy.value) do
              globalReqMappingPolicy.value[#globalReqMappingPolicy.value+1] = v
            end
          else
            verbObj.policies[#verbObj.policies+1] = {
              type = 'reqMapping',
              value = backend.policy.value
            }
          end
        end
      else
        verbObj.backendUrl = ''
        verbObj.backendMethod = verb
      end
    end
  end
  return decoded
end