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()
}