override fun process()

in dsl/kotless/kotless-lang-parser/src/main/kotlin/io/kotless/parser/processor/route/DynamicRoutesProcessor.kt [38:60]


    override fun process(files: Set<KtFile>, binding: BindingContext, context: ProcessorContext) {
        val globalPermissions = context.output.get(GlobalActionsProcessor).permissions
        val entrypoint = context.output.get(EntrypointProcessor).entrypoint

        processStaticFunctions(files, binding) { func, entry, klass ->
            val permissions = PermissionsProcessor.process(func, binding, context) + globalPermissions

            val name = prepareFunctionName(func, KotlessAppConfig.packages(context.lambda.environment.getValue(KotlessAppConfig.PACKAGE_ENV_NAME)))

            val key = TypedStorage.Key<Lambda>()
            val function = Lambda(name, context.jar, entrypoint, context.lambda, permissions)

            val path = entry.getURIPath(binding, "path") ?: error(func, "For Kotless HTTP annotation `path` property is required")
            val method = methodAnnotations[klass] ?: error(func, "Unknown Kotless HTTP annotation")

            context.resources.register(key, function)
            context.routes.register(API.DynamicRoute(method, path, key))

            if (context.config.optimization.autoWarm.enable) {
                context.events.register(Events.Scheduled(name, everyNMinutes(context.config.optimization.autoWarm.minutes), ScheduledEventType.Autowarm, key))
            }
        }
    }