override fun run()

in dsl/ktor/cloud/ktor-lang-azure/src/main/kotlin/io/kotless/dsl/ktor/KotlessAzure.kt [45:84]


    override fun run(
        @HttpTrigger(
            name = "req",
            methods = [HttpMethod.GET, HttpMethod.POST],
            authLevel = AuthorizationLevel.FUNCTION
        ) request: HttpRequestMessage<Optional<String>>, context: ExecutionContext
    ): HttpResponseMessage {
        if (!prepared) {
            prepare(engine.application)
            prepared = true
        }

        val response = try {
            runBlocking {
                val myRequest = request.toRequest()

                logger.debug("Started handling request")
                logger.trace("Request is {}", myRequest.body?.string ?: "")

                val call = KotlessCall(engine.application, myRequest)

                engine.pipeline.execute(call)

                call.response.toHttp()
            }
        } catch (e: Throwable) {
            logger.error("Error occurred during handle of request and was not caught", e)
            null
        } ?: return request
            .createResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR)
            .build()
        val outputResponse = request
            .createResponseBuilder(HttpStatus.valueOf(response.statusCode))
            .body(response.body)
        response.headers.forEach {
            outputResponse.header(it.key, it.value)
        }
        logger.info("Ended handling request")
        return outputResponse.build()
    }